종류 byte / short / int / long / float / double / char / boolean / void
모두 첫 글자가 소문자
산술 연산이 가능
비객체 타입으로, Null을 가질 수 없는 형태
int a = null; (X)
int a = 0; (O)
참조형은 기본적으로 java.lang.Object 를 상속
또한, 선언한 자료형이 기본형이 아닌경우 참조형이라 보면 된다.
참조형에는 Class, Interface, Arrays 이 있다.
Class Type
클래스형은 기본형과 다르게 객체를 참조하는 형태
class MyObject{
private int index;
MyObject(int index) {
this.index = index;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
// ---------------------------------------------------------------------------------
public class ClassType {
public static void main(String[] args) {
MyObject a = new MyObject(2);
MyObject b = new MyObject(4);
System.out.println(a.getIndex()); // "a" result is 2.
a = b;
System.out.println(a.getIndex()); // "a" result is 4.
b.setIndex(6);
System.out.println(a.getIndex()); // "a" result is 6.
}
}
// b객체의 멤버 변수 값을 바꿨지만 a객체도 같은 객체를 참조하기 때문에 동일한 값을 출력
1 - 1. String Class
참조형에 속하지만 기본적인 사용은 기본형처럼 사용.
일반적으로 기본형 비교는 == 연산자를 사용하지만 String 객체간의 비교는 .equals()메소드 사용
1 - 2. Wrapper Class
Primitive type으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우
그러한 기능을 지원하는 클래스
public static void main(String[] args) {
Integer a = new Integer(3);
System.out.println(a.MIN_VALUE);
System.out.println(a.MAX_VALUE);
}
// 출력 시..
-2147483648
2147483647
primitive Type에서 Reference Type간에 변환할때
Boxing 과 Unboxing이라고 한다.
public static void main(String[] args) {
Integer a = new Integer(3);
int b = 3;
Integer c = (Integer) b; // 이것은 boxing
int d = (int) a; // 이것은 Unboxing
int e = a; // 자동으로 된다!!
Integer f = b; // 자동으로 된다!!
}
valueOf()와 parseInt()의 차이
// to int i from Integer ii
int i = ii.intValue();
// to Integer ii from int i
Integer ii = new Integer( i );
※ 정수로 파싱할 수 없는 String을 파라미터로 전달하면 에러
2. Interface Type
인터페이스를 만들게 되면 새로운 참조 자료형Reference Data Type을 만드는 것과 같다.
참고로 기존에 있는 자료형의 이름도 만들 수 있습니다(ex:Long).
그리고 인터페이스도 자료형이기 때문에 자료형으로써 자신을 구현한 객체의 주소를 가질 수 있습니다.
하지만 인터페이스에 정의된 메소드만 사용할 수 있음.
3. Array Type
배열은 기본형,참조형으로 만들 수 있다.
자료형에 대해 []를 선언함으로 배열을 지정할 수 있습니다.
참고로 배열형 변수 또한 배열의 주소를 가지고 있는 것이기 때문에 클래스형의 특징과 일치
같은 객체의 주소를 바라보게 만들면 동일한 배열을 가리키게 된다.
그리고 아래 코드의 마지막 라인처럼 [][]등으로 중첩 괄호를 사용하게 된다면 다중 배열로 사용할 수 있다.
public class ArrayType {
public static void main(String[] args) {
int [] i = new int[2];
Long [] l = new Long[2];
Object[][] o = null;
}