- JAVA 참조 자료형
참조 자료형은 기본 자료형과 달리 Stack에 직접 값을 할 당하는것이 아니라 Stack에는 Heap의 주소를 참조하고 있고 실제 값은 Heap영역에 올린다. 이렇게 직접 값을 가지고 있지안고 주소를 가지고 있는 자료형을 참조 자료형 이라고한다.
참조 자료형은 특징은 다음과 같다.
- new 키워드로 생성한 객체
- String 과 배열을 new 없이 객체를 생성할 수 없지만 참조 자료형에 속한다.
- class, array. interface, Enummeration 을 참조 자료형 이라고한다.
<참조자료형 - Class Type>
public class ReClass {
private int a = 100;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
public class ReClassMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
ReClass rc = new ReClass();
System.out.println(rc.getA());
}
}
rc 객체는 a라는 멤보변수를 가지고 있는 class type 참조 자료형이다.
< 참조자료형 - 인터페이스(Interface) Type>
java interface는 보통 추상적 클래스로 만이 알고있습니다. 이또한 맞는말입니다. 그리고 참조 자료형이라고 해도 맞는 말입니다. 저도 그리 중요하지 안다고 생각해 아~ 자료형이라고도 할 수 있구나 하고 인지만 하고 있습니다. 사실 현업에서 자료형으로서 interface를 사용해보지 못하였습니다.
interface ReInter<T> {
void number(T value);
}
< 참조자료형 - 배열(Array) Type >
배열 타입 참조 자료형은 말그대로 배열입니다. 배열의 객체는 실제 Stack에 값을 가지고 있지안고 Heap 영역의 주소를 가지고 있습니다. 배열 타입은 new 를 사용하여 객체를 생성가거나 생략하고 생성이 가능합니다.
public class ArrayType {
int[] a = new int[3];
char[] b = new char[4];
// new 없이
int[] c = {1, 2};
char[] d = {'a', 'b'};
}
< 참조자료형 - 열거(Wrapper) Type >
보통 Wrapper Class 라고 한다. 열거(감싸다) 타입은 말그대로 기본타입을 Class 형식으로 기본형 자료형을 감싼 형태를 말합니다.
기본형 | Wrapper Class |
byte | Byte |
short | Short |
int | Int |
long | Long |
float | Float |
double | Double |
char | Char |
boolean | Boolean |
※ 기본 자료형은 null 초기화 할 수 없지만 Wrapper Class는 null로 초기화 할 수 있습니다. 그렇게 때문에 Sql 작업에서null 이 필요하다면 getter에 Wrapper Class 종종 사용합니다.
public class MyClass {
public static void main(String[] args) {
Integer myInt = 5;
Double myDouble = 5.99;
Character myChar = 'A';
System.out.println(myInt);
System.out.println(myDouble);
System.out.println(myChar);
System.out.println(myInt.intValue());
System.out.println(myInt.doubleValue());
System.out.println(myDouble.doubleValue());
System.out.println(myChar.charValue());
}
}
< 참조자료형 - String Class Type >
보통 String 은 new 없이 기본 자료형처럼 써서 Stack 에 값이 직접 있다고 생각 할 수 있습니다. 하지만 String 은 참조 자료형이기때문에 Stack 에 직접 값을 가지고 있지 안습니다.
'Tech > Java' 카테고리의 다른 글
Java 자료구조 - Stack (0) | 2020.05.25 |
---|---|
Java 기본 자료형 실수 표현 방법 (float, double) - 부동 소수점 (0) | 2020.05.25 |
Java 기본 자료형 (0) | 2020.05.23 |
JVM 더 깊이 있게 알아보자 (0) | 2020.05.22 |
main(String[] args) 메소드 깊이 있게 알아보자 (5) - 최종 간단 정리 (0) | 2020.05.22 |
댓글