자바의 자료형에는 기본 자료형과 참조 자료형이 있다.

 

기본 자료형은 정수형,문자형 등이 있다. (2-1부터 2-4까지의 문서를 참고)

 

https://digiconfactory.tistory.com/23

 

자바 튜토리얼 (2-1) 자바의 변수 (정수형)

자바의 변수 시간이다. 변수를 이해하는 순간 컴퓨터에 대해 새롭게 눈을 뜨게 된다. C나 파이썬 자바 어느 프로그래밍 언어에도 변수가 있다. 어느 언어를 배우건 개념을 이해하면 그 다음 배우

digiconfactory.tistory.com

그 다음이 참조 자료형인데 클래스가 참조 자료형이다. 대표적인 참조 자료형은 문자열을 표현하는 String 클래스이다. JDK(Java Development Kit)를 설치했을 때 설치된다.

 

String 객체는 생성자에 기본 자료형 char 배열을 매개변수로 생성된다.

 

String str = "abc";

 

이 문장은 아래와 같은 의미다.

 

char data[] = {'a', 'b', 'c'};

String str = new String(data);

 

출처: Java Oracle Documentation

 

https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

 

String (Java Platform SE 8 )

Compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argum

docs.oracle.com

String 의 경우 기본 자료형 처럼 new 키워드를 쓰지않고 바로 쓰고 있다. 그러나 컴파일러는 String에 값을 할당할 때 자동으로 생성자를 만든다.

 

이번 예제에 사용할 객체는 농구선수이다.

 

오늘의 객체

class BasketballPlayer {

 

String name;

int age;

double height;

double weight;

 

}

이름과 나이 신장과 체중까지 만들었다. String 은 JDK가 제공하는 참조 자료형이라는 것을 기억하자.

 

여기에 이 선수의 경력정보를 멤버 변수로 추가해보자.

 

class BasketballPlayer {

String name;

int age;

double height;

double weight;

int totalPoint;

int totalAssist;

int totalRebound;

}

 

이 선수의 기록을 몇개만 추가했는데도 벌써부터 멤버 변수가 늘어나고 있다. 계속 늘릴 수도 있겠지만 경력정보도 객체로 볼수 있으니까 클래스로 분리할 수 있지 않을까?

 

그래서 경력정보 클래스를 하나 더 만들어서 BasketballPlayer에서 참조 변수로 넣는다.

 

class BasketballPlayer {

String name;

int age;

double height;

double weight;

Record totalRecord;

}

 

class Record{

int totalPoint;

int totalAssist;

int totalRebound;

}

 

분리시키니까 좀더 이해하기 편하다. 총 점수와 도움 리바운드, 블록, 필드골 성공률 출전시간 등 모든 기록을 넣어도 통일성이 있을 것이다.

선수정보와 선수의 기록을 분리

 

<예제>

 

기록하는 Record 클래스
농구선수 클래스

농구선수 르브론 제임스를 인스턴스로 생성시켰다. 그의 생애 총 득점은 34,087 점으로 어림잡아 34000을 넣어줬다. 한가지 주의할 점은 참조형 변수가 클래스의 멤버변수일때 생성자나 다른 곳에서 new 키워드로 참조형 변수를 생성해줘야 사용할 수 있다.

 

BasketballPlayer new 키워드로 생성시켰다고 해도 아직 Record 클래스는 메모리상에 없다.

 

여기서

 

this.totalRecord = new Record( );

 

p1.totalRecord = new Record( );

 

가 된다.

 

클래스 안에 기본 자료형 뿐 아니라 참조 자료형 (클래스)을 선언해서 사용할 수 있다. 물론 JDK 의 수많은 클래스들도 참조 자료형이므로 사용가능하다. 그렇게 하면 이미 기능들이 갖춰진 클래스 들을 조합하여 나만의 클래스를 만들 수 있을 것이다.

공유하기

facebook twitter kakaoTalk kakaostory naver band