기본 타입변수 / 참조 타입변수
기본형 타입(Primitive type)
- 총 8가지의 기본형 타입(Primitive type)을 미리 정의하여 제공한다.
- 기본값이 있기 때문에 Null이 존재하지 않는다. 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용한다.
- 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다.
- 만약 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러가 발생한다. 주로 문법상의 에러가 많다. 예를 들어 ;을 안붙였다는 이유로 빨간 줄이 쳐지는 경우
참조형 타입(Reference type)
- 기본형 타입을 제외한 타입들이 모두 참조형 타입(Reference type)이다.
- wrapper 포장클래스 또한 참조형타입에 해당된다.
- 빈 객체를 의미하는 Null이 존재한다.
- 값이 저장되어 있는 곳의 주소값을 저장하는 공간으로 힙(Heap) 메모리에 저장된다.
- 문법상으로는 에러가 없지만 실행시켰을 때 에러가 나는 런타임 에러가 발생한다. 예를 들어 객체나 배열을 Null 값으로 받으면 NullPointException이 발생하므로 변수값을 넣어야 한다.
참조타입 (reference type)은 주소값으로 불러온다. : call by reference , call by value
자바는 데이터가 너무 많아서, " 내가 알려줄 것은 주소값 뿐이야 "하며 값을 불러올때 주소값을 알려준다.
자바는 크게 기본형(primitive type), Wrapper Class 참조형(reference type)으로 나눠진다.
Primitive(프리머티브) 자료형(기본형 타입)
byte / short / int / long / float / double / char / boolean / void
모두 첫 글자가 소문자
산술 연산이 가능함.
null로 초기화 할 수 없음.
Wrapper 클래스(포장 클래스)
Wrapper Class는 클래스로 참조형 타입에 해당한다.
Byte / Short / Integer / Long / Float / Double / Charater / Boolean / Void
모두 첫 글자가 대문자
산술 연산 불가
null로 초기화 할 수 있음.
DB와 연동시 DTO 객체에 null이 필요한 경우 사용 할 수 있음
사용 이유:
1. 매개변수로 객체가 요구 될때.
2. 기본형 값이 아닌 객체로 저장해야 할 때.
3. 객체간의 비교가 필요할 때.
Boxing
Primitive 자료형 -> Wrapper 클래스
기본형 자료형을 포장 클래스로 변환한다.
int primitive_age = 30;
Integer wrapper_age = new Integer(primitive_age);
Unboxing
Wrapper 클래스 -> Primitive 자료형
포장 클래스를 기본형 자료형으로 변환한다.
Integer wrapper_age = new Integer(30);
int primitive_age= wrapper_age.intValue();
아래는 int와 integer의 차이점
Null(널)
null로 초기화된 참조 변수는 스택영역 생성
// import java.util.*;
class Solution {
public static void main(String[] arg) {
System.out.println("test");
int[] arr = null;
int[] arr_1 = null;
arr = new int[3];
arr_1 = new int[3];
System.out.println(arr);
System.out.println(arr_1);
//실행하면 각기 다른 주소값이 나온다.
}
}
int[] arr1 = {100,200,300};
System.out.println("arr1 : " + arr1); //arr1 : 주소값
int[] arr2 = null;
System.out.println("arr2 : " + arr2); //arr2 : null
System.out.println(Arrays.toString(arr1)); //{100,200,300};
arr2 = Arrays.copyOf(arr1, arr1.length); //arr2 에 arr1
System.out.println("arr2 : " + arr2); //arr2 : arr1과 다른주소값
System.out.println(Arrays.toString(arr2)); //{100,200,300}; //arr과 같은 array출력
.copyOf()
배열값을 대입해주는데, 주소는 대입해주지않는다. 새로운영역으로 만들어준다.
Exception = 사용자잘못의에러코드
NullPointerException = 참조변수가 null값 가지고 있을 때 발생하는 에러코드
배열
이중배열 (다차원배열)
첨부 이미지출처 : 이것이자바다
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 22-06-17 클래스 (CLASS) ☑ (0) | 2022.06.17 |
---|---|
[JAVA] vscode 상위하위 packaging 만들기 (0) | 2022.06.17 |
[JAVA] 22-06-15 자바 static ☑ (0) | 2022.06.15 |
[JAVA] 22-06-16 JVM 메모리 구조 ☑ (0) | 2022.06.15 |
[JAVA] 객체 지향 OOP ! 개념 이해 추가 정리 ☑ (0) | 2022.06.14 |