swimminginthecode DIVE!

BACK/JAVA Basic

JAVA 04

dazz6 2024. 4. 2. 17:09
접근지정자
종류 의미
+ 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() 는 다른 개념 

'BACK > JAVA Basic' 카테고리의 다른 글

JAVA 06  (0) 2024.04.04
JAVA 05  (0) 2024.04.03
JAVA 03  (0) 2024.04.01
JAVA 02  (0) 2024.03.29
JAVA 01  (0) 2024.03.28