클래스는 여러 자료를 담을 수 있는 자료형이다.
명함이라는 클래스 자료형
명함이라는 클래스로 만든 인스턴스
기본자료형과 클래스자료형의 차이
기본자료형(예를들어 int 등)은 int a = 1; 이라고 만들면 a 에 1이라는 숫자가 들어간다.
하지만 클래스자료형은 명함 m1 = new 명함(); 이라고 만들면
m1에 데이터가 아닌 그 데이터를 가리키는 주소가 들어간다.
위에서 생성한 m1을 명함 m2 = m1; 이런식으로 m2에 넣는다고 하더라도
데이터가 들어가는 것이 아닌 주소가 들어가게 된다.
즉 아래와 같이
기본자료형반환() 이라는 함수를 호출하여 반환된 값을 출력해보면 값이 나오지만,
클래스자료형반환() 이라는 함수를 호출하여 반환된 값을 출력해보면 해당 데이터의 주소가 나온다.
(컴퓨터에 따라 주소가 아니라 인스턴스의 내용이 대괄호 안에 나올 수 있다.)
package ch13;
class A {
int a = 10;
}
public class Test {
static void sample(A a) {
System.out.println(a.a);
}
public static void main(String[] args) {
// 기본자료형은 데이터 자체를 저장한다
int a1 = 10;
int a2 = a1;
a1 = a1 + 10;
System.out.println(a1);
System.out.println(a2);
// 클래스자료형은 인스턴스의 주소값을 저장한다
A test = new A();
A test1 = test;
test.a = test.a + 10;
System.out.println(test.a);
System.out.println(test1.a);
// 서로 다른 인스턴스 이기 때문에 데이터가 따로 계산된다
A test2 = new A();
A test3 = new A();
test2.a = test2.a + 10;
System.out.println(test2.a);
System.out.println(test3.a);
}
}
'Programming Language > Java' 카테고리의 다른 글
200414 // 통신 - 모스키토, 브로드캐스트, 블루투스, 소켓 (0) | 2020.04.14 |
---|---|
200413 멀티프로세싱, 쓰레드, 문맥교환, IPC, 콜백, 익명클래스 (0) | 2020.04.13 |
자바 공공데이터 마스크 약국 정보 이용하기 (0) | 2020.04.10 |
jsonchema2pojo 체크 포인트 (0) | 2020.04.10 |
이클립스 자바 자동완성 편하게하기 (0) | 2020.04.08 |