클래스 맴버와 인스턴스 맴버간의 참조와 호출
·
자바/기본적인 개념
# 같은 클래스에 속한 맴버들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능하다. # 단, 클래스 맴버가 인스턴스 맴버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야 한다. -> 그 이유는 인스턴스 맴버가 존재하는 시점에는 클래스 맴버는 항상 존재하지만, 클래스 맴버가 존재하는 시점에 인스턴스 맴버가 존재하지 않을 수 있기 때문에 컴파일러가 에러를 발생하게 한다. 1. 예제 - 클래스 변수가 인스턴스 변수를 참조할 때 에러발생 int a; static int b = a; 에러 발생 // 에러발생 static int b = new Exercise001().a; // 컴파일 가능 2. 예제 - 참조변수를 사용하지 않고 인스턴스 메서드 참조하기.
클래스 메서드(static 메서드)와 인스턴스 메서드
·
자바/기본적인 개념
1. 클래스 메서드(static 메서드) (1) 인스턴스와 관계없는 메서드를 클래스 메서드이다. ( 인스턴스 멤버는 객체 생성시 메모리에 올라가지만 클래스 멤버는 클래스와 동시에 로딩된다. ) (2) 인스턴스를 사용하지 않는다고 해서 반드시 클래스 메서드를 정의하는 것은 아니지만, 특별한 이유가 없는 한 그렇게 하는 것이 일반적이다. 2. 인스턴스 메서드 - 인스턴스 변수와 관련된 작업을 하며, 메서드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드 이다. 3. 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려해본다. - 그 이유는 메서드 호출 시간이 짧아지므로 성능이 향상된다. 4. 이름이 동일한 클래스 메서드와 인스턴스 메서드를 동시에 사용하면? ( 에러가 발생..
기본형 매개변수와 참조형 매개변수
·
자바/기본적인 개념
1. 기본형 매개변수 - 변수의 값만 읽기만 할 수 있다. 그 이유는 단순히 값만 전달 받기 때문이다. 2. 참조형 매개변수 - 변수의 값을 읽고 변경할 수 있다. 그 이유는 저장되는 곳의 주소를 전달 받기 때문이다. 3. 배열을 이용한 참조형 매개변수 4. 참조형 반환타입 ( 인스턴스화를 하지 않아서 클래스 변수를 사용할 수 없다. ) ( 그래서 new를 해주는데 메소드를 통해서 받아보자. )
JVM의 메모리 구조
·
자바/기본적인 개념
# 응용 프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 그 중 3가지 영역에 대해서 알아보자. 1. 메서드 영역 - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. - 이 때, 그 클래스의 클래스 변수(CV)도 이 영역에 함께 생성된다. 2. Call Stack - 호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. - 메서드가 호출되면 호출 스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역 변수(매개변수 포함)들과 연산의 중간결과 등을 ..