분류 전체보기67 8. 호출스택 호출스택 메서드가 수행에 필요한 메모리가 제공되는 공간 메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제 하나의 스택에서는 하나의 메서드만 실행된다. 나머지는 대기중인 상태로 유지된다. 사실상 프로그램의 흐름(시작->종료)이라고 할 수 있을 것 같다. 위 설명을 표현하면 아래와 같다. main 메서드가 호출이 됨. println() 메서드를 main()이 호출 함. main()은 실행상태에서 대기상태로 전환되며, println이 실행상태가 됨. 즉, 아래 있는 메서드가 위의 메서드를 호출한 것. println()이 종료되고, 스택에 할당되어 있던 메모리가 해제 main()이 다시 실행상태로 변환 됨. 위의 예시처럼, 기본적으로 하나의 스택에서는 하나의 메서드만 실행되는 것을 알 수 있다.(나머지는.. 2022. 9. 18. 7. static 변수와 instance변수 static 변수는 보통 객체의 공통적인 속성을 접근할 때 사용하며(공유), instance 변수는 개별적인 속성에 접근할 때 사용된다. java에서 권장하는 각 변수의 사용법은 아래와 같다. class Card { String kind; int number; static int width = 100; static int height = 200; } Card c = new Card(); c.kind = "Heart"; c.number = 5; Card.width = 200; Card.height = 300; 위 코드처럼 객체를 생성하고 각 변수에 접근할 때, 인스턴스 변수의 경우 참조변수를 통해서 접근을 한다. static 변수의 경우 클래스명을 통해 접근하는 것을 권장한다. (공유되는 메모리인데, 오해.. 2022. 9. 17. 6. 선언위치(클래스영역, 메소드영역)에 따른 변수의 종류 클래스 내부에서 변수를 선언하는 위치와 방법에 따라서 변수의 종류가 변경된다. 아래 코드를 기반으로 설명해보면, class Variables { //// 클래스 영역 Start //// int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스변수(static변수, 공유변수) ///// 메서드 영역 Start //// void method() { int localVariable = 0; //지역변수 } ///// 메서드 영역 End //// //// 클래스 영역 End //// } 우선 1. 클래스 영역 2. 메서드 영역 두가지로 분리될 수 있다. 1. 클래스 영역 클래스 시작부터 끝까지이다. 해당 영역에서는 선언문만 가능하다. 클래스 영역에 선.. 2022. 9. 17. 5. 클래스의 정의 클래스는 크게 3가지로 정의할 수 있다. 1. 설계도 2. 데이터+함수 3. 사용자정의 타입 2. 클래스 == 데이터 + 함수 클래스를 데이터와 함수의 결합이라고 정의해볼 때, 클래스 외에 데이터들을 저장할 수 있는 방식은 어떠한 것들이 있는지, 정리해보면 아래와 같다. 변수: 하나의 데이터를 저장할 수 있는 공간이다. 배열: 동일 타입의 데이터를 하나로 저장할 수 있는 공간이다. 구조체: 서로 관련된 여러 데이터들을 타입에 관계없이 하나로 저장할 수 있는 공간이다. 클래스: 서로 관련된 데이터와 함수를 결합할 수 있는 공간이다.( == 구조체 + 함수) 3. 클래스 == 사용자 정의 타입 원하는 타입을 직접 만들 수 있다. 예를 들어, 자동차를 위한 타입, 시계를 생성하기 위한 타입 등 말그대로 사용자.. 2022. 9. 17. 이전 1 ··· 8 9 10 11 12 13 14 ··· 17 다음