접근지정자
종류 | 의미 | |
+ | public | · 같은 project 내에서 유효 · 다른 package에 있어도 유효 |
- | protected | · 같은 project 내에서 유효 · 다른 package에 있는 경우, 자식 클래스에서만 유효 |
default | · 같은 package 내에서 유효 | |
# | private | · 현재 class 내에서 유효 |
클래스 선언
[접근지정자][기타제한자] class 클래스이름 {}
예를 들어 이름이 a인 클래스를 선언한다고 하면,
public class a {}
main에서 클래스 사용하기
위 예시에서 선언한 a를 main에서 사용하기 위해 인스턴스화
a b = new a();
이름 | 역할 |
a | 보조기억장치에 있는 a.class를 주기억장치로 로딩 |
b | 객체 변수 |
new | 인스턴스화를 위한 키워드 |
a() | 생성자를 호출 |
garbage collection (GC) 란?
유효하지 않은 메모리를 자동으로 정리해 주는 기능
전역변수(Global Variable)와 지역변수(Local Variable)
이름 | 의미 | 특징 |
전역변수 | 블록 밖에서 선언되어 클래스 전역에서 사용 가능한 변수 | |
지역변수 | 블록 안에서 선언되어 그 안에서만 사용 가능한 변수 | method 종료 후 휘발 |
static, stack, heap에 대해
이름 | 의미 | 특징 |
static | static 키워드가 붙은 데이터를 저장하는 메모리 영역 | |
stack | 메소드 내 정의하는 기본 자료형 지역변수의 데이터 값이 저장되는 메모리 영역 | 메소드가 호출될 때 생성되고, 종료할 때 소멸 |
heap | 참조형 데이터 타입을 갖는 데이터가 저장되는 메모리 영역 | 객체, 배열 등의 데이터가 저장됨 |
참고
heap은 참조형 데이터 객체의 실제 데이터가 담기는 공간이며,
static 영역의 객체는 heap 영역의 참조값이다.
참고한 글 : https://velog.io/@chullll/JAVA-Static-Stack-Heap
getter 와 setter
public class a {
private int speed;
public void data() {
System.out.println(speed)
}
}
public static void main(String[] args) {
a b = new a();
System.out.println(b.speed());
}
speed 값을 호출하기 위해 코드를 작성했지만 speed 값은 private로 선언되었으므로 응답하지 않는다
public class a {
private int speed;
public void data() {
System.out.println(speed)
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
private로 선언되었을 때 값을 얻거나 수정하기 위해 method를 추가한 모습
speed 자체는 private로 선언되었기 때문에 호출 및 접근이 불가능하지만,
public으로 작성한 method에서 speed의 값을 얻거나 수정해 주는 방법을 사용할 수 있음.
this. 란?
지역변수와 멤버변수를 구분하기 위해 사용
public void setSpeed(int speed) {
this.speed = speed;
}
위 코드에서 멤버필드와 지역변수의 이름이 speed로 같기 때문에 구분하기 위해 멤버필드 앞에 this. 를 붙임
참고
this 와 this() 는 다른 개념