TIL (2022.02.7)

조지성·2022년 2월 7일
0

TIL

목록 보기
28/78
post-thumbnail

일반변수, 레퍼런스 변수

  • 일반 변수 : 컴파일 시 크기를 알 수 있기 때문에 값을 가지고 있다,
  • 레퍼런스 변수(참조 변수) : 컴파일시 크기를 알 수 없기 때문에 메모리 설계가 불가능하고 따라서 변수에는 heap의 주소값을 가지고 있다., 커스텀 타입은 4Byte로 고정
package ch02;

//new가 되어서 heap에 할당이 될 때 사이즈를 알 수 있다. ( 프로그램이 실행되었을 때 == 런타임 되었을 때 )
class MyData{
	int id = 1; // 4Byte
	int price = 1000; // 4Byte
}

public class VarRefEx01 {
	public static void main(String[] args) {
		
		//타입 변수; => 변수를 선언한다.
		//타입 변수 = 값 => 변수를 초기화한다. , 초기화한다 == 메모리에 할당 된다.
		int num = 10;// 일반변수 (컴파일시 크기가 정해져 있는 것 )  
		MyData d = new MyData() ; // 레퍼런스 변수 (컴파일시 크기가 정해져 있지 않는 것)
		System.out.println(d.id); 
	}
}

메서드

메서드 : 클래스가 하는 행위

package ch02;

class 손님{
	void 커피마시기(){
		System.out.println("손님이 커피를 마셔요");
	}
}


public class MethodEx01 {
	
	//메서드 == MethodEx01클래스의 행위
	static void start() {
		System.out.println("만나서 반갑습니다."); //String
		System.out.println("start 메서드 종료");
	}
	
	public static void main(String[] args) {
		MethodEx01.start();
		손님 s = new 손님();
		s.커피마시기();
	}
}

메서드의 stack 메모리

  • queue : FIFO
  • stack : LIFO
package ch02;

public class StackEx01 {
	
	static void a() {
		StackEx01.b();
		System.out.println("a2");
		System.out.println("a3");
		System.out.println("a4");
		
	}
	
	static void b() {
		System.out.println("b1");
		System.out.println("b2");
		System.out.println("b3");
	}
	
	public static void main(String[] args) {
		System.out.println("m1");
		System.out.println("m2");
		StackEx01.a();
		System.out.println("m4");
		System.out.println("m5");
	}
}



profile
초보 개발자의 성장기💻

0개의 댓글