평생 소장! 19,800 원 15,000 원(계좌이체 구매 한정)


기업은행: 206-021800-01-029

예금주: 박세홍


카톡 ID: chaesam(카톡 아이디 검색 후, 문의 주세요!)

이메일: [email protected]

# 클래스 변수 vs 인스턴스 변수 클래스 변수란, static 키워드가 필드에 적용된 것을 말합니다. 이와 반면, non-static 필드(static이 없는 일반적인 필드)는 인스턴스 변수라 합니다. ``` class Student { // 클래스 변수(static 필드) static int count = 0; // 인스턴스 변수(non-static 필드) int stdNum; String name; } ``` 인스턴스 변수는 각 객체 내부에 존재하지만, 클래스 변수는 객체 밖, 클래스 영역에 존재합니다. ![클라우드스터딩-자바-클래스-변수-vs-인스턴스-변수](https://i.imgur.com/RwvZzxL.png) 클래스 변수의 사용은, 아래와 같이 클래스 이름을 통해 접근 가능합니다. ``` System.out.printf("총 학생 수: "); System.out.printf("%d\n", Student.count); ``` ## 문제 샘숭전자의 갤럭시 스마트폰은 고유의 시리얼 넘버를 가지고 있다. 이 시리얼 넘버는 임의의 알파벳과 생성 순서를 번호로 가진다. ``` // 시리얼 넘버 예 Galaxy { serialNum: I-1 } // 1번째 객체 Galaxy { serialNum: V-2 } // 2번째 객체 Galaxy { serialNum: U-3 } // 3번째 객체 ``` 그런데 주어진 코드의 시리얼 넘버에는 문제가 있다. 생성 순서에 따른 번호가 아닌 모두 1을 출력하고 있다. ``` Galaxy { serialNum: I-1 } Galaxy { serialNum: V-1 } Galaxy { serialNum: U-1 } Galaxy { serialNum: P-1 } Galaxy { serialNum: S-1 } ========================= Galaxy 객체의 개수: ? ``` 주어진 코드에 클래스 변수를 적용하여, 출력 예와 같은 결과를 얻으시오. ## 출력 예 ``` Galaxy { serialNum: I-1 } Galaxy { serialNum: V-2 } Galaxy { serialNum: U-3 } Galaxy { serialNum: P-4 } Galaxy { serialNum: S-5 } ========================= Galaxy 객체의 개수: 5 ```
관련 강의로 이동

코드: java 1.8

public class GalaxyTest { public static void main (String[] args) { // 5칸 크기의 객체 배열 생성 Galaxy[] phones = new Galaxy[5]; // 배열 속 객체 할당 for (int i = 0; i < phones.length; i++) { phones[i] = new Galaxy(); } // 모든 객체 정보 출력 for (int i = 0; i < phones.length; i++) { phones[i].print(); } System.out.println("========================="); /* 2. Galaxy 객체의 개수를 클래스 변수로 출력하세요.*/ System.out.printf("Galaxy 객체의 개수: ?"); } } // 클래스 class Galaxy { // 필드(인스턴스 변수) String serialNum; // 일련번호 /* 1. 해당 필드를 클래스 변수화 하세요. */ int count = 0; // 생성자 Galaxy() { count++; char c = randomAlphabet(); // A ~ Z 중 택1 serialNum = String.format("%c-%d", c, count); } // 메소드 char randomAlphabet() { return (char) ('A' + Math.random() * 26); // A to Z } void print() { System.out.printf("Galaxy { serialNum: %s }\n", serialNum); } }

입력

정답이 궁금하다면? 코드를 제출해보세요!