자료형은 기본형과 참조형 2가지로 분류할 수 있다.
기본형: 변수가 실제 값(리터럴)을 스택 영역에 저장
-구분
정수형 (byte, short, int, long)
실수형 (float, double)
문자형 (char)
논리형(boolean)
참조형(reference type)
-기본형을 제외한 나머지
-참조형 데이터의 값은 힙 메모리 영역에 저장되며
변수에 대입되는 값은 힙 메모리 영역의 주소 값(스택 영역에 저장)
-구분
배열(Array): 같은 데이터 타입을 가진 데이터들을 메모리에 연속으로 저장하여 만든 데이터들의 그룹
열거(Enumeration): 계절, 요일 같이 한정된 값만을 가지는 데이터 타입
클래스(Class): 여러 타입의 변수와 메소드를 그룹으로 묶어서 새롭게 정의한 사용자 정의 타입
인터페이스(Interface): 여러 클래스 타입에서 공통으로 사용하는 상수와 메소드를 따로 분리하여 추상화시킨 타입
변수 선언 방법
1. new 연산자 (객체생성연산자)
new 연산자를 통해 힙영역에 데이터를 저장할 공간을 할당받고,
그 공간의 참조(주소) 값을 객체에게 반환한 후 생성자를 호출
클래스 변수 = new 클래스();
String a = new String("Hello!");
클래스: 자료형
변수: 참조값 저장
new: 힙영역에 데이터를 저장할 공간을 할당받고, 인스턴스를 생성하여 그 공간의 참조 값을 리턴
클래스(): 생성자 호출
2. 리터럴 선언
String b = "Hello!";
참조형 변수를 선언할 때 new 연산자를 이용하지 않고 실제 값(리터럴)을 넣어 선언한 것
자바 자체에서 new 연산자를 이용하지 않아도 리터럴(값) 자체를 대입할 수 있도록 지원
new 연산자와 리터럴 대입 방법의 차이점
public class test {
public static void main(String[] args) {
String a = new String("Hello!");
String b = "Hello!";
String c = "Hello!";
if (a == b) {
System.out.println("a == b"); //a와 b가 같은 주소 값을 가르키는 가
}
if (b == c) {
System.out.println("b == c");
}
}
}
실행 시 b == c만 출력이 된다.
-new 연산자는 기존에 같은 데이터 존재 유무 관계 없이 무조건 생성
-리터럴 대입 방법은 기존의 힙 메모리에 동일한 값이 있는지 확인하고
동일한 값이 있다면 새롭게 객체를 생성하는 것이 아니라 기존 것을 바라보게 된다.
'Java' 카테고리의 다른 글
Java 콘솔 입력 (scanner) (0) | 2024.05.23 |
---|---|
Java 증감 연산자 (0) | 2024.05.23 |
Java 표준 입출력 system 클래스 (0) | 2024.04.11 |
java의 접근제어자(Access Modifier) (0) | 2024.04.11 |