728x90
1. 참조
1-2. 기본 자료형
- 기본 자료형 : int, float, double, long, boolean, ...
- 기본값 가지고 있음
- 메소드 가지고 있지 않음
- 소문자로 시작
- 형태
1-2-1. 형태
int[] i = new int[3];
System.out.println(i[0]); // 0
double[] d = new double[3];
System.out.println(d[0]); // 0.0
배열에 값을 할당하지 않았지만 임의의 값이 적혀져 있음
1-3. 참조 자료형
참조 자료형 : String, 사용자 정의로 만들어진 객체들
- 내용이 없다면 null
- 메소드 가지고 있음
- 대문자로 시작
1-3-1. 형태
String[] s = new String[3];
System.out.println(s[0]); // null
Camera[] c = new Camera[3];
System.out.println(c[0] == null); // true
딱히 값이 할당되지 않았다면 null을 반환
1-4. 활용
int a = 10;
int b = 20;
b = a;
System.out.println(a); // 10
System.out.println(b); // 10
b = 30;
System.out.println(a); // 10
System.out.println(b); // 30
기본 자료형은 할당 연산자를 사용해 복사해도 개별의 값을 가진다.
Camera c1 = new Camera();
Camera c2 = new Camera();
c1.name = "카메라1";
c2.name = "카메라2";
System.out.println(c1.name); // 카메라1
System.out.println(c2.name); // 카메라2
c2 = c1;
System.out.println(c1.name); // 카메라1
System.out.println(c2.name); // 카메라1
c2.name = "고장난 카메라";
System.out.println(c1.name); // 고장난 카메라
System.out.println(c2.name); // 고장난 카메라
참조 자료형은 할당으로 복사했을 시 값이 동시에 바뀐다. 같은 곳을 바라보고 있기 대문이다.
public static void changeName(Camera camera){
camera.name = "잘못된 카메라"; // 첫번째 풍선도 바꿔버림
}
이렇게 메소드를 만들고
changeName(c2);
System.out.println(c1.name); // 잘못된 카메라
System.out.println(c2.name); // 잘못된 카메라
c2에만 메소드를 실행시켜도 값이 같이 바뀐다.
만약 이 관계를 끊고 싶다면
c2 = null;
null을 할당하면 된다.
반응형
'Java 개념' 카테고리의 다른 글
인터페이스 (0) | 2023.07.31 |
---|---|
final, Enum(열거형) (0) | 2023.07.03 |
다형성과 super (0) | 2023.07.02 |
상속과 메소드 오버라이딩 (0) | 2023.07.02 |
패키지 (0) | 2023.07.02 |