자바 정적 키워드를 사용하는 방법
Java에서 클래스로 작업할 때 일반적으로 해당 멤버에 액세스하기 전에 클래스의 인스턴스를 생성해야 합니다. 그러나 클래스의 인스턴스를 생성하지 않고 클래스 멤버를 정의하려는 상황이 발생할 수 있습니다.
여기서 Java static 키워드가 사용됩니다. Java static 키워드는 클래스의 인스턴스를 생성하지 않고도 액세스할 수 있는 클래스 멤버를 정의하는 데 사용됩니다.
이 자습서에서는 Java 정적 키워드의 기본 사항과 Java 프로그램에서 이를 사용하는 방법을 예제와 함께 설명합니다.
자바 클래스
Java에서 클래스는 객체의 청사진입니다. 예를 들어 OrderCoffee라는 클래스에는 주문, 기존 주문 변경, 주문에 새 항목 추가 등 커피 주문과 관련된 모든 기능이 포함될 수 있습니다.
그런 다음 해당 클래스의 인스턴스인 개체를 만들 수 있습니다. 예를 들어 CoffeeOrder12라는 개체는 CoffeeOrder 클래스의 청사진을 사용하여 개별 커피 주문에 대한 데이터를 저장할 수 있습니다. CoffeeOrder12 개체는 CoffeeOrder 클래스 내에서 선언된 모든 함수와 메서드에 액세스할 수 있습니다. 이러한 아이디어를 시각적으로 표현하려면 이미지 1을 참조하세요.
이제 Java 클래스의 기본 사항에 대해 논의했으므로 Java 정적 키워드 탐색으로 넘어갈 수 있습니다.
자바 정적 메소드
클래스 메서드라고도 하는 정적 메서드는 해당 인스턴스가 아닌 클래스에 속하는 메서드입니다. 정적 메서드는 클래스에 속하므로 클래스 자체에서만 메서드를 호출할 수 있으며 클래스의 개체에서는 호출할 수 없습니다.
다음은 정적 메서드를 호출하는 구문입니다.
참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.
부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.
Class.methodName();
이것이 어떻게 작동하는지 보기 위해 예를 살펴보겠습니다.
커피 가게의 주문을 관리하는 프로그램을 만들고 있다고 가정해 보겠습니다. 우리는 커피 주문을 위한 모든 기능을 저장하는 CoffeeOrder라는 클래스를 만들고 싶습니다.
우리는 바리스타의 콘솔에 새 주문 알림을 인쇄할 수 있기를 원합니다. 우리는 이 새로운 주문 알림이 커피 주문 객체의 다른 코드에 의존하지 않기 때문에 정적이기를 원합니다. 다음 코드를 사용하여 이 작업을 수행할 수 있습니다.
class CoffeeOrder { int createOrder() { // Code here int orderNumber = 92; return orderNumber; } static void printOrder(int order) { System.out.println("Order #" + order + " order has been placed."); } } class Main { public static void main(String[] args) { CoffeeOrder order92 = new CoffeeOrder(); int number = order92.createOrder(); System.out.println("Order number: " + number); CoffeeOrder.printOrder(number); } }
코드 반환:
Order number: 92 Order #92 has been placed.
코드를 단계별로 분해해 보겠습니다. 먼저 CoffeeOrder라는 클래스를 선언합니다. CoffeeOrder에는 createOrder()
의 두 가지 메서드가 있습니다. 및 printOrder()
.
createOrder()
주문을 생성하고 주문 번호를 반환하는 일반 메서드입니다. printOrder()
새 주문이 접수되었음을 바리스타에게 알리는 메시지를 콘솔에 출력하는 정적 메서드입니다.
주 프로그램에서 order92라는 CoffeeOrder의 개체를 만듭니다. 이 개체는 주문 #92에 대한 데이터를 저장합니다. 그런 다음 createOrder()
를 사용합니다. 메소드를 사용하여 주문 번호를 가져오고 Order number:가 앞에 오는 해당 주문 번호를 콘솔에 출력합니다.
createOrder()
를 호출할 때 메소드, 우리는 order92.createOrder()
를 사용합니다 . createOrder()
때문입니다. 정적 메서드가 아니므로 개체를 조작할 때 액세스할 수 있습니다.
기본 코드의 끝에서 CoffeeOrder.printOrder()
를 사용합니다. 주문 번호[주문 번호] 주문이 접수되었다는 메시지를 인쇄합니다. 콘솔에. 이 메시지에서 order number
특정 주문과 관련된 번호와 같습니다. printOrder()
때문에 정적 메서드이므로 액세스하려면 CoffeeOrder(우리 클래스)를 사용해야 합니다.
order92.printOrder()
를 사용하려고 했다면 (우리 클래스의 인스턴스를 호출함) createOrder()
를 사용할 때와 마찬가지로 방법을 사용하면 경고를 줄 수 있습니다.
자바 정적 변수
Java의 static 키워드는 정적 인스턴스 변수를 생성하는 데에도 사용할 수 있습니다. 정적 변수는 클래스에 속하며 프로그램 실행 시작 시 한 번만 초기화됩니다.
정적 변수는 개체에 속하지 않습니다. 즉, 액세스하려면 관련 클래스를 참조해야 합니다. Java에서 정적 변수를 선언하는 구문은 다음과 같습니다.
static String COFFEE_NAME = "Espresso";
이 예에서는 COFFEE_NAME이라는 정적 변수를 선언했으며 여기에 Espresso 문자열 값을 할당했습니다.
사용 중인 Java 정적 변수를 보여주는 예를 살펴보겠습니다.
커피숍에서 주문을 처리하는 프로그램을 만들고 있다고 가정합니다. 이 프로그램은 근무 중인 바리스타의 수를 저장해야 하며, 주문이 생성되면 프로그램은 해당 주문을 해당 주문을 준비할 바리스타의 이름과 연결해야 합니다.
이 코드를 사용하여 커피 가공 프로그램을 만들 수 있습니다.
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
코드 반환:
Baristas on duty: 2 Assigned barista: Hannah Johnson
코드에서 다음 두 변수를 선언합니다.
- 바리스타 온듀티. 이것은 표준 변수이므로 우리 클래스 전체에서 액세스할 수 있습니다.
- 이름. 이것은 정적 변수이므로 해당 값을 검색하기 위해 연결된 개체를 참조해야 합니다.
메인 프로그램에서 CoffeeOrder 클래스의 인스턴스를 만들고 그것을 order111이라고 부릅니다. 그런 다음 Baristas on Duty:라는 메시지를 출력하고 baristasOnDuty 변수의 내용이 뒤따릅니다. 이것은 표준 변수이기 때문에 클래스 이름을 참조할 필요가 없습니다.
코드의 다음 줄에서 Assigned barista:메시지를 콘솔에 출력하고 그 뒤에 주문이 할당된 바리스타의 이름을 출력합니다. 단, 바리스타의 이름은 정적 변수로 저장됩니다.
즉, 바리스타의 이름을 검색하려면 해당 변수가 연결된 개체의 이름을 참조해야 합니다. 이 경우 order111.name을 사용하여 바리스타의 이름을 검색합니다. 변수 이름이 정적이어서 order111 개체를 참조할 때만 액세스할 수 있기 때문입니다.
자바 정적 블록
Java static 키워드를 사용하여 정적 블록을 생성할 수도 있습니다. 클래스에 개별적으로 초기화해야 하는 다른 정적 변수가 있는 경우 정적 블록을 사용해야 합니다.
정적 블록은 클래스가 컴퓨터 메모리에 처음 로드될 때 한 번 실행됩니다. 다음은 Java의 정적 코드 블록에 대한 구문입니다.
static { // Code here }
정적 블록이 작동하는 방식을 보여주기 위해 예제를 살펴보겠습니다. 메시지 A new order is incoming …
프로그램이 바리스타에게 주문을 할당하기 전에 콘솔에 인쇄하여 바리스타가 준비할 수 있도록 합니다. 정적 클래스를 만들어 그렇게 할 수 있습니다. 정적 클래스는 프로그램이 처음 실행될 때 실행됩니다.
다음은 앞서 언급한 메시지를 출력한 다음 바리스타에게 주문을 할당하는 정적 클래스의 예입니다.
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; static { System.out.println("A new order is incoming …"); } public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
코드 반환:
A new order is incoming … Baristas on duty: 2 Assigned barista: Hannah Johnson
우리 코드에서는 먼저 baristasOnDuty와 이름 변수를 초기화했습니다. 그런 다음 프로그램은 A new order is arrival ...이라는 메시지를 콘솔에 출력했습니다. 이 메시지는 정적 코드 블록에 저장되었습니다. 프로그램은 정적 블록의 내용을 실행한 후 마지막 예제의 주 프로그램과 동일한 출력을 반환하는 주 프로그램을 실행했습니다.
결론
Java 정적 키워드는 여러 용도로 사용됩니다. static 키워드를 사용하여 정적 메서드, 정적 변수 및 정적 코드 블록을 만들 수 있습니다.
이 자습서에서는 예제와 함께 static 키워드의 기본 사항과 메서드, 변수 및 코드 블록과 함께 static 키워드를 사용하는 방법을 살펴보았습니다. 이 튜토리얼을 읽고 나면 전문가처럼 Java 정적 키워드를 사용할 준비가 된 것입니다.