[ 공부 목표 ]
- 대답은 간단하게, 지식 습득은 깊이있게
- 가능하다면 짧고 간결하게 대답하자.
- 세부적인 지식에 대한 꼬리질문의 가능성을 생각해 깊이 있게 공부하자.- 음성메모를 활용하기
- 두괄식으로 말하자.
- 어떤 내용이나 주장이 분명하게 전달이 되었는지 확인하자.
- 이해한 것을 바탕으로 자연스럽게 설명하는 연습을 하자.
- 목소리의 강도, 발음 등 개선점 찾자.
변수의 참조
를 전달하는 방식입니다. 참조에 의한 호출을 의미한다.
함수가 호출될 때,
변수의 참조
를 전달하는 방식이다.원본
에 바로가기
를 만들어보면, 원본을 수정하면 바로가기 파일도 수정이 되어있다.값에 의한 호출을 의미한다.
함수가 호출될 때,
함수의 인자
로 전달한다. (해당 변수를 가르킨다.)원본
을 복사
하면, 원본을 수정해도 복사된 파일은 수정되어 있지 않다.함수에 전달되는 인자의 데이터 타입
에 따라서 함수 호출 방식이 달라진다.
데이터를 저장하기 위해 사용되는 자료형을 의미하며 변수에 “실제 값”을 가지는 것을 의미한다.
실제 값을 갖는것이 아닌 데이터가 저장된 메모리의 “주소 값”을 가지는 자료형이며, 해당 값은 객체를 참조하는 변수 타입을 의미한다.
기본 자료형을 기초로 만들어진 자료형이다.
기본 자료형과 달리 메서드를 가질 수 있다.
기본값은null
이니, 참조형 객체가 초기화되지 않으면 nullPointerException
이 발생한다.
Object
모든 Class
와 Enum
은 Object
클래스를 상속한다. 다시말해 Object는 모든 Class와 Enum의 일반화된 타입이다.
String
char
의 배열로 구현된 참조 자료형이다.
Java가 String
형을 따로 제공하는 이유는 문자열에 유용한 메서드
를 제공하기 위해서이다.
Wrapper 클래스
Wrapper Class
는 기본 자료형을 감싼 클래스이다.
기본 자료형을 ‘객체(Object)’로 다루기 위해서 비 객체를 객체화 시키는 클래스로 “기본타입의 객체화”를 의미한다.
클래스
로 랩핑하여 유용한 메서드
를 제공하기 위해서 이다.더 중요한 이유는 제네릭
에 있다. 제네릭에 사용된 매개변수 T
는 Object
자료형만 받을 수 있다. 다시 말해 클래스로 정의된 객체만을 전달받는다는 것이다. 참고 자료에 의하면, 코드를 짜다보면 제네릭을 기본 자료형에 적용해야 하는 경우에, Wrapper Class
를 이용하면 문제가 해소된다고 한다.
즉, 제네릭을 통한 유연한 프로그래밍을 기본 자료형에서도 적용할 수 있게 하기 위해 Wrapper Class
를 제공한다고 생각하면 이해하기 쉬울 것이다.
public class CallByReferenceExample {
// 객체의 속성을 변경하는 메서드 changeValue
// MyObject 객체를 인자로 받아 해당 객체의 value 속성을 변경합니다.
public static void changeValue(MyObject obj) {
obj.setValue(100);
}
// main 메서드에서 obj 객체를 생성하고, 이를 changeValue 메서드에 전달합니다.
public static void main(String[] args) {
MyObject obj = new MyObject(10);
System.out.println("Before: " + obj.getValue()); // 출력 결과: Before: 10
// 참조를 통해 객체의 속성을 변경
changeValue(obj);
System.out.println("After: " + obj.getValue()); // 출력 결과: After: 100
}
}
// MyObject 클래스는 value라는 private 속성을 가지고 있습니다.
class MyObject {
private int value;
public MyObject(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
// 객체의 참조가 전달되므로 changeValue 메서드에서 value 속성을 변경하면 main 메서드에서도 변경된 값을 확인할 수 있습니다.
추가적으로 Wrapper 클래스에 대해서 자세하게 알아보자.
참고자료