본문 바로가기

JAVA27

11. static 메서드와 instance 메서드 static 메서드와 instance메서드의 차이를 확실히 알고, 언제 사용하는 지 알아야 한다. 아래 코드를 통해 살펴보자. class MyMath{ long a, b; // 인스턴스 변수 // 인스턴스 메서드: 인스턴스 변수 사용 long add() { return a+b; } // static 메서드 : 인스턴스 변수 사용x static long add(long a, long b) { return a+b; } } public class methodEx { public static void main(String[] args) { // static 메서드 호출: 클래스 이름 사용해서 호출 System.out.println("static 메서드 사용 : " + MyMath.add(10, 20)); // .. 2022. 9. 20.
10. 참조형 반환타입 메서드의 return 타입이 참조형인 경우, 스택의 흐름이 어떻게 되는지 확실히 알고 익숙해져야 한다. class Data2 { int x; } public class ReferenceReturnEx { public static void main(String[] args) { Data2 d = new Data2(); d.x = 100; Data2 d2 = copy(d); System.out.println("d.x = " + d.x); System.out.println("d2.x = " + d2.x); } static Data2 copy(Data2 d) { Data2 tmp = new Data2(); tmp.x = d.x; return tmp; } } 해당 코드는 copy라는 메서드의 반환 타입을 Data.. 2022. 9. 20.
9. 기본형&참조형 매개변수 기본형 매개변수: 변수의 값을 읽기만 할 수 있다. (Read only) 참조형 매개변수: 변수의 값을 읽고 변경할 수 있다. (Read & Write) (매개변수의 타입이 기본형이 아니면 모두 참조형이다.) 아래 코드를 통해, 참조형 매개변수와 기본형 매개변수의 차이를 살펴보자. 아래 코드의 스택 흐름을 꼭 그릴 줄 알아야 한다. class Data { int x; } public class parametersEx { public static void main(String[] args) { Data d = new Data(); d.x = 10; System.out.println("초기 d.x의 값 :: " + d.x); // 기본형 매개변수를 가지는 함수 change(d.x); System.out.pr.. 2022. 9. 20.
8. 호출스택 호출스택 메서드가 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제 하나의 스택에서는 하나의 메서드만 실행된다. 나머지는 대기중인 상태로 유지된다. 사실상 프로그램의 흐름(시작->종료)이라고 할 수 있을 것 같다. 위 설명을 표현하면 아래와 같다. main 메서드가 호출이 됨. println() 메서드를 main()이 호출 함. main()은 실행상태에서 대기상태로 전환되며, println이 실행상태가 됨. 즉, 아래 있는 메서드가 위의 메서드를 호출한 것. println()이 종료되고, 스택에 할당되어 있던 메모리가 해제 main()이 다시 실행상태로 변환 됨. 위의 예시처럼, 기본적으로 하나의 스택에서는 하나의 메서드만 실행되는 것을 알 수 있다.(나머지는.. 2022. 9. 18.