유디의 공간정보·개발일기
H3-1. 0720_ Stack/Heap영역, 변수 본문
public class MyClassTest_0720 {
public static void main(String[] args) {
//class : 변수와 함수들의 집합
MyClass_0716 my = new MyClass_0716(); //my : myclass 타입의 로컬변수
//new MyClass : 생성자를 호출한 것이며, 힙에 객체가 생성된다.
// = 이라는 할당연산자로 인해 힙에 생성된 객체의 주소가 my변수에 저장된다.
int count = 500; //얘는 Stack영역에 direct로 바로 값이 할당(assign)되는데
my.count = 1000; //Myclass는 Stack영역에는 주소만 저장되고, Heap영역에 생성된 객체가 활용됨
//Heap 내부에 할당된 메모리 공간의 count라는 변수에 값을 저장한다.
MyClass_0716.name = "june"; //name : myclass 클래스 안에 있는 String타입의 클래스변수
// !! 둘다 Stack영역에 할당되는건 똑같은데
// 저장되는 데이터가 my는 생성된 객체의 주소값을, count는 다이렉트로 값을 저장할 수 있다는 게 차이점
}
}
int count = 500;
-> int 타입의 변수, stack 영역에 할당됨
my.count = 1000;
-> Myclass 클래스 안의 int 타입의 변수
c.f. 메모리 영역
- 스택 영역 : 함수의 매개변수(파라미터)와 지역변수가 저장됨
메모리를 할당받지만 생성된 메모리 객체에 주소를 저장할 수 있다.
- 힙 영역 : 필요에 의해 동적으로 할당되는 영역
값을 저장
class MyClass_0716 {
int count; //--> 객체변수 : 객체화하여 참조한다.
static String name; // static : 클래스변수(공유변수)
void print() {
int amount; //--> 로컬변수, 지역변수 라고 한다. print 함수안에서만 활성화
}
void write() {
count = 500; //count : write함수에서 myclass안의 int타입의 변수를 '참조'한 것
amount = 1000; //서로 다른 함수라서 amount 참조불가능
}
MyClass_0716(int count) { //--> 생성자임, 생성자는 return타입이 없어야 한다.
this.count = count; //앞의 count는 객체변수, 뒤의 count는 매개변수(로컬변수)
System.out.println("MyClass()");
}
}
- 로컬변수(지역변수) : 서로 다른 함수이면 참조를 못하는 한 메서드 안의 변수
- static : 클래스 변수(공유변수)
- 객체변수 : 객체화하여 참조한다.
- class : 변수와 함수들의 집합
- package : 폴더, class를 모아둔 것, 이름은 소문자로 지정
printf("2x=y=10의 해, x=%d, y=%d 입니다."\n, x, y);
println("2x+y=10의 해, x=" + x + "y=" + y + "입니다.");
- printf 가 println보다 편리하다.
'JAVA' 카테고리의 다른 글
H3-3. 0720_CarTest 과제 (0) | 2021.10.31 |
---|---|
H3-2. 0720_ JAVA 코드 (0) | 2021.10.31 |
H2. 0719_ JAVA 기초2, 응용 과제 (0) | 2021.10.31 |
H1. 0716_ JAVA 기초 (0) | 2021.10.31 |
7-2. 0713_ Hashmap (0) | 2021.10.24 |