- 변수의 종류
선언 위치에 따른 변수의 종류
선언위치 선언방법 할당되는메모리영역
1. 클래스 변수 : 클래스 내부 static 자료형 변수명; 클래스 영역
static int cv; 클래스 정보 로드시
특징 : 클래스의 모든 객체의 공통변수로 사용됨.
객체화와 상관이 없다.
클래스명.변수명 사용됨.
기본값으로 초기화 됨.
2. 인스턴스 변수 클래스 내부 자료형 변수명; 힙영역
int iv; 객체화시
특징 : 객체별로 메모리 할당됨. 객체별로 다른 값을 저장 할 수 있음.
반드시 객체화가 되어야 변수임.
참조변수명.변수명 사용됨
기본값으로 초기화 됨.
3. 지역변수 메서드 내부 자료형 변수명; 스택영역
int lv; 선언문 실행시
특징 : 선언된 이후부터 메서드(블럭) 내부에서만 사용가능한 변수
변수명 사용됨. lv=100;
매개변수도 지역변수임.
반드시 초기화 해야 사용할 수 있음
📌
package chap6;
class Card {
String kind; //인스턴스변수 c1.kind
int number; //인스턴스변수 c1.number
static int width = 250; //클래스변수 Card.width
static int height =100; //클래스변수 Card.height
}
public class CardEx1 {
public static void main(String[] args) {
System.out.println("카드의 크기:" + Card.width + "," + Card.height );
// System.out.println("카드의 종류:" + Card.kind + "," + Card.number );
Card c1 = new Card();
System.out.println("카드의 종류:" + c1.kind + "," + c1.number );
c1.kind = "Spade";
c1.number = 1;
Card c2 = new Card();
c2.kind = "Heart";
c2.number = 10;
System.out.println("c1카드:" + c1.kind + "," + c1.number +
",("+Card.width+","+Card.height+")" );
System.out.println("c2카드:" + c2.kind + "," + c2.number+
",("+c2.width+","+c2.height+")" );
c1.width = 100;
c1.height = 50;
System.out.println("c1카드:" + c1.kind + "," + c1.number +
",("+c1.width+","+c1.height+")" );
System.out.println("c2카드:" + c2.kind + "," + c2.number+
",("+c2.width+","+c2.height+")" );
}
}
- 지역변수
지역변수 : 메서드 내부에서 선언됨. 선언된 블럭 내부에서만 사용 가능함.
매개변수는 지역변수임.
반드시 초기화 필요함
📌
package chap6;
public class LocalValEx1 {
static int cv;
public static void main(String[] args) {
//클래스변수,인스턴스변수는 초기화 필요없음. 기본값으로 자동 초기화
System.out.println(cv); //0
int num = 200; //지역변수
System.out.println(num);
int lv=0;
//System.out.println(lv); //초기화 필요
if(num==200) lv=10;
else if(num > 200) lv=20;
System.out.println(lv);
String grade="F";
int score = 80;
switch(score/10) {
case 10:
case 9 : grade="A";break;
case 8 : grade="B";break;
case 7 : grade="C";break;
case 6 : grade="D";break;
// default : grade="F";
}
System.out.println(score + "점의 학점:" + grade); //switch 블럭 수정
}
}
- 클래스 변수 사용
📌
package chap6;
/*
* 클래스 변수 사용
* static 변수를 이용하여 자동차 serial 번호 설정하기
*/
class Car {
String color; //인스턴스 변수
int number; //인스턴스 변수
int sno;
static int cnt; // 클래스 변수
// int cnt;
static int width = 250; //클래스 변수
static int height = 150; //클래스 변수
//toString() : 객체의 문자열화에 관여하는 메서드
//객체를 문자열화 해주는 메서드 : 참조변수명을 출력하면 자동 호출되는 메서드
public String toString() {
return "자동차고유번호:" + sno + ","+color + ":" + number
+ "(" + width +","+ height + ")=> 생산번호:" + cnt;
}
}
public class CarEx1 {
public static void main(String[] args) {
Car c1 = new Car();
c1.color = "white";
c1.number = 1234;
c1.sno = ++Car.cnt;
// c1.sno = ++c1.cnt;
System.out.println("c1자동차" + c1); //
Car c2 = new Car();
c2.color = "red";
c2.number = 2345;
c2.sno = ++Car.cnt;
// c2.sno = ++c2.cnt;
System.out.println("c1자동차" + c1.toString());
System.out.println("c2자동차" + c2);
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
| [Java] chap6 : 클래스와 객체 - Exam3 (0) | 2023.04.15 |
|---|---|
| [Java] chap6 : 클래스와 객체 - 메서드 구성 (0) | 2023.04.15 |
| [Java] chap6 : 클래스와 객체 - Exam 1-2 (0) | 2023.04.15 |
| [Java] chap6 : 클래스와 객체 - 클래스와 객체 (0) | 2023.04.15 |
| [Java] chap5 : 배열 Array - Exam1-5 (0) | 2023.04.14 |