JavaRush /Java Blog /Random-KO /커피 브레이크 #142. Java에서 static 키워드는 어떤 역할을 합니까?

커피 브레이크 #142. Java에서 static 키워드는 어떤 역할을 합니까?

Random-KO 그룹에 게시되었습니다
출처: FreeCodeCamp static 키워드는 변수, 메서드, 정적 블록 등 Java 코드의 다양한 부분에서 사용할 수 있습니다. 오늘은 실제로 어떻게 적용할 수 있는지 알아보겠습니다. Java에서 static커피 브레이크 #142.  Java에서 static 키워드는 어떤 역할을 합니까?  - 1 키워드를 사용하는 주요 목적은 메모리를 절약하는 것입니다. 다른 클래스에서 액세스할 클래스에 변수를 만들려면 먼저 클래스의 인스턴스를 만든 다음 변수의 각 인스턴스에 새 값을 할당해야 합니다. 이는 새 변수의 값이 모든 새 클래스/객체에 대해 동일하도록 하기 위해 필요합니다. 그러나 정적 변수를 생성하면 해당 값은 다른 모든 클래스에서 일정하게 유지되므로 변수를 사용하기 위해 인스턴스를 생성할 필요가 없습니다. 이 방법으로 변수를 한 번 생성하면 메모리가 한 번만 할당됩니다. 이 기사의 몇 가지 예를 통해 이를 더 잘 이해할 수 있습니다.

Java에서 정적 변수를 만드는 방법

변수를 생성할 때 static 키워드를 사용하는 방법을 이해하기 위해 클래스의 각 인스턴스에서 공유되는 변수를 생성하는 일반적인 방법을 살펴보겠습니다.
class Student {
    String studentName;
    String course;
    String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();

        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";
        Student2.school = "freeCodeCamp";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
위의 코드에서 무슨 일이 일어났는지 단계별로 설명하겠습니다. 우리는 세 가지 변수( studentName , CourseSchool) 를 사용하여 Student 클래스를 만들었습니다 . 그런 다음 Student 클래스 의 두 인스턴스를 만들었습니다 .
Student Student1 = new Student();
Student Student2 = new Student();
첫 번째 인스턴스는 클래스에서 생성된 변수에 액세스할 수 있는 Student1 이며 다음 값을 갖습니다.
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
두 번째 인스턴스의 의미는 다음과 같습니다.
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
자세히 살펴보면 두 학생 모두 "freeCodeCamp"라는 동일한 학교 이름을 가지고 있음을 알 수 있습니다. 하지만 같은 학교에 100명의 학생을 만들어야 한다면 어떻게 될까요? 이는 동일한 값으로 변수를 100번 초기화하여 매번 새 메모리를 할당한다는 의미입니다. 이는 일부에게는 문제가 되지 않을 수 있지만 대규모 코드베이스에서는 프로그램 속도가 크게 느려질 수 있습니다. 이 문제를 해결하기 위해 static 키워드를 사용하여 school 변수를 생성하겠습니다 . 이후에는 클래스의 모든 인스턴스가 이 변수를 사용할 수 있습니다. 이 같은:
class Student {
    String studentName;
    String course;
    static String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";


        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
이 코드에서는 school 이라는 정적 변수를 만들었습니다 . static 키워드가 데이터 유형 및 변수 이름 앞에 옵니다. static String school = "freeCodeCamp"; . 이제 클래스의 새 인스턴스를 생성할 때 각 인스턴스에 대해 학교 변수를 초기화할 필요가 없습니다 . 우리 코드에서는 첫 번째 인스턴스에서만 변수에 값을 할당하고 다음 인스턴스에서 해당 값을 상속했습니다. 코드 어디에서나 정적 변수 값을 변경하면 이전에 선언된 코드의 다른 부분에 있는 값이 재정의됩니다. 따라서 프로그램에서 일정하게 유지하려는 변수 에만 static 키워드를 사용해야 합니다 . 또한 클래스를 인스턴스화할 때 변수를 다시 선언할 필요가 없도록 변수를 생성할 때 변수에 값을 할당할 수도 있습니다. static String school = "freeCodeCamp"; . 이 방법을 사용하면 다음과 같은 결과를 얻을 수 있습니다.
class Student {
    String studentName;
    String course;
    static String school = "freeCodeCamp";

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
이제 정적 블록을 사용하여 정적 변수를 초기화하는 방법을 살펴보겠습니다.

Java에서 정적 메서드를 만드는 방법

예제를 살펴보기 전에 Java의 정적 메서드에 대해 알아야 할 몇 가지 사항은 다음과 같습니다.
  • 정적 메서드는 정적 변수에만 액세스하고 수정할 수 있습니다.
  • 클래스의 인스턴스를 생성하지 않고도 정적 메서드를 호출/사용할 수 있습니다.
이해를 돕기 위한 예는 다음과 같습니다.
class EvenNumber {

    static int evenNumber;

    static void incrementBy2(){
        evenNumber = evenNumber + 2;
        System.out.println(evenNumber);
    }

    public static void main(String[] args) {
        incrementBy2(); // 2
        incrementBy2(); // 4
        incrementBy2(); // 6
        incrementBy2(); // 8
    }
}
위 코드에서는 EvenNumber 라는 클래스에 정수( evenNumber ) 를 생성했습니다 . 우리의 정적 메서드는 incrementBy2() 라고 합니다 . 이 메소드는 정수 evenNumber 의 값을 증가시키고 해당 값을 인쇄합니다. 클래스의 인스턴스를 생성하지 않고도 프로그램의 기본 메소드에서 incrementBy2() 메소드를 호출할 수 있었습니다 . 메소드를 호출할 때마다 evenNumber가 2씩 증가하여 인쇄됩니다. 메소드를 호출할 때 점 표기법을 사용하여 메소드에 클래스 이름을 추가할 수도 있습니다. EvenNumber.incrementBy2(); . 각 정적 메서드는 클래스의 인스턴스가 아닌 클래스에 속합니다.

Java에서 정적 블록을 만드는 방법

Java의 정적 블록은 생성자와 유사합니다. 정적 변수를 초기화하는 데 사용할 수 있으며, 기본 메서드 전에 컴파일러에 의해 실행됩니다 .
class Block {

    static int year;

    static {
        year = 2022;
        System.out.println("This code block got executed first");
    }

    public static void main(String[] args) {

        System.out.println("Hello World");
        System.out.println(year);
    }
}
위 코드에서는 정적 정수 변수 year 를 만들었습니다 . 그런 다음 정적 블록에서 초기화했습니다.
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
보시다시피, 정적 키워드 뒤에 중괄호를 사용하여 정적 블록을 만들 수 있습니다. 코드의 정적 블록에서 연도 변수를 값 2022로 초기화했습니다. 또한 "이 코드 블록이 먼저 실행되었습니다."라는 텍스트도 인쇄했습니다. 기본 메소드 에서는 "Hello World"와 정적 변수 연도를 인쇄했습니다 . 콘솔에서 코드는 다음 순서로 실행됩니다.
이 코드 블록은 Hello World 2022에서 처음 실행되었습니다.
이는 정적 블록의 코드가 기본 메소드보다 먼저 실행되는 방식을 명확하게 보여줍니다 .

결론

이번 포스팅에서는 자바의 static 키워드 에 대해 알아봤습니다. 이는 기본적으로 Java로 작성된 프로그램에서 메모리를 최적화하는 데 도움이 되는 키워드입니다. 또한 예제를 통해 정적 변수와 메서드를 만드는 방법도 살펴보았습니다. 마지막으로 정적 변수를 초기화하는 데 사용할 수 있는 정적 블록에 대해 이야기했습니다. 정적 블록은 기본 메서드보다 먼저 실행됩니다. 즐거운 코딩하세요!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION