TIL(2022.02.08)

조지성·2022년 2월 8일
0

TIL

목록 보기
29/78
post-thumbnail

지역변수와 전역변수

package ch02;

/*
 * 정리 
 * Stack (지역변수 - 메소드가 실행될 때 메모리에 할당, 메서드가 종료될 때 메모리에서 사라짐)
 * Heap(전역변수 - new 할 때 메모리에 할당, 더 이상 참조하지 않을 때 메모리에서 사라짐)
 * Static (전역변수 - main 메서드가 실행되기 전에 메모리에 할당, main 메서드가 종료되면 메모리에서 사라짐) 
 */
public class StackEx02 {
	
	static int sum = 20; // 전역변수 (static), 자바프로그램이 시작 될 때 뜨다가 종료되기 전까지 존재
	int value = 50; //  전역변수 (heap) ,new하는 순간 메모리에 뜸 , 더 이상 참조하지 않을 때 자동으로 사라진다. 
	
	//메서드 코드내부는 실행될 때 stack에 올라감
	static void a() {
		int n1 = 1; // a 메서드의 스택영역에 저장됨 (지역변수) , a메서드가 실행될 때 stack공간에 n1이 할당되고 a메서드가 종료되면 메모리에 사라짐
		System.out.println(n1);
		
		//실행되려고 할 때 static 공간에 할당해야 하는데 불가능함, static 공간 할당은 main 메서드 실행전에 해야함
		//static int n2 = 2;
	}
	
	public static void main(String[] args) {
		a();
		System.out.println(sum);
		StackEx02 s = new StackEx02(); // heap공간에 value가 할당
		System.out.println(s.value);
		System.out.println("test1 - 더이상 s 변수를 참조하지 않기 때문에 메모리에서 사라진다.");
	}
}

메서드의 리턴

메서드 : 어떤 클래스의 행위

package ch02;

public class MethodEx02 {
	
	//void는 리턴하지 않겠다라는 의미
	static int add() { // 호출이 되면 중괄호 내부가 실행된다. 이때 Stack공간이 메모리에 만들어진다.
		int sum  = 5+6;
		return sum;
	}

	public static void main(String[] args) {
		int result = add(); // add() 메서드 호출
		System.out.println(result);
	}
}

메서드의 매개변수와 인수

package ch02;

public class MethodEx03 {

	
	//매개변수와 인수의 타입이 다르면 안된다.
	static void 자판기_음료_돌려주기(int coin) {
		System.out.println("동전을 투입하였습니다.");
	}
	
	static void 자판기_음료_돌려주기2(double paper) {
		System.out.println("지폐를 투입하였습니다.");
	}
	
	static void 자판기_음료_돌려주기3(String card) {
		System.out.println("카드를 투입하였습니다.");
	}
	
	static void add(int n1, int n2) { //매개변수가 2개
		System.out.println("더하기 메서드가 호출되었습니다.");
	}
	
	public static void main(String[] args) {
		자판기_음료_돌려주기(0);
		자판기_음료_돌려주기2(10.0);
		자판기_음료_돌려주기3("삼성카드");
		add(5,6);
	}
}
profile
초보 개발자의 성장기💻

0개의 댓글