wasup
Java) 데이터 타입 본문
1. 데이터 타입 분류
1) 기본(premitive)데이터 타입
: 정수, 실수, 논리 리터럴을 지정하는 타입
2) 참조(reference)데이터 타입
: 객체의 번지를 참조하는 타입, 배열, 열거, 클래스, 인터페이스
3) 기본타입과 참조타입의 차이점
: 기본타입은 실제값을 변수에 저장
참조타입은 객체의 번지를 값으로 갖음.
번지를 통해 객체를 참조한다는 뜻에서 참조타입이라고 함.
2. 메모리 사용영역
1) Method영역
: 코드에서 사용되틑 클래스(~.class)파일들을 클래스로더로 읽어 클래스별로 상수, 필드, 메서드, 생성자 등을 구분해 저장.
이 영역은 모든 쓰레드 (프로그램)가 공유하는 영역이다.
2) Heep영역
: 객체와 배열이 생성되는 영역.
힙영역에 생성된 객체와 배열은 스텍영역의 변수나 다른 객체의 필드에서 참조한다.
참조하는 변수나 필드가 없다면 의미가 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 JVM은 쓰레기수집기(Garbage Collector)를 실행시켜서 객체를 힙영역에서 자동으로 해제한다.
그렇기 때문에 개발자는 제거를 위한 별도의 코드를 작성할 필요가 없다.
3) Stack영역
: JVM이 스텍영역은 각 쓰레드(프로그램)마다 하나씩 존재하며 쓰레드(프로그램)이 실행될 때 마다 할당이 된다.
자바는 문자열을 String변수에 저장하기 때문에 String변수를 우선 선언해야 한다.
실제로 문자열을 String변수에 저장한다는 말은 틀린 표현이다.
문자열은 String객체로 생성되고 변수는 이 String객체가 있는 메모리 주소를 저장한다. 즉, 참조한다.
문자열은 직접적으로 변수에 저장되는 것이 아니라 참조하는것이다.
자바는 문자열 리터럴이 동일하다면 String객체(문자열리터럴)를 공유하도록 되어있다.
일반적으로 변수에 문자열을 저장할 경우 문자열 리터럴을 사용하지만 new연산자를 사용해서 직접적으로 String객체를 생성할 수 있다.
new연산자는 힙영역에 새로운 객체를 만들 때 사용하는 연산자로 "객체생성연산자"라고 한다.
public class StringMain {
public static void main(String[] args) {
//기본타입
int age = 25;
double price = 100.5;
//참조타입
String name = "김씨";
String name2 = "김씨";
String str1 = "가나다";
String str2 = "가나다";
String str3 = new String("가나다");
if(str1 == str2) {
System.out.println("str1과 str2은 참조번지가 동일하다");
}else {
System.out.println("str1과 str2은 참조번지가 다르다.");
}
if(str1 == str3) {
System.out.println("str1과 str3은 참조번지가 동일하다");
}else {
System.out.println("str1과 str3은 참조번지가 다르다.");
}
System.out.println();
System.out.println();
System.out.println();
if(str1.equals(str2)) {
System.out.println("str1과 str2은 문자열이 동일하다");
}else {
System.out.println("str1과 str2은 문자열이 다르다.");
}
if(str1.equals(str3)) {
System.out.println("str1과 str3은 문자열이 동일하다");
}else {
System.out.println("str1과 str3은 문자열이 다르다.");
}
}
}
'IT > Java' 카테고리의 다른 글
Java) Scanner test (0) | 2021.05.15 |
---|---|
Java) Array 배열이 뭐냐 (0) | 2021.05.13 |
Java) NIO(New Input Output) (0) | 2021.05.11 |
Java) ion! Input, Output, Reader, Writer, File (0) | 2021.05.10 |
Java) Collect (0) | 2021.05.09 |