728x90
자바는 String 클래스 타입을 사용해서 문자열을 다룬다
String 타입은 큰따옴표("")로 감싸진 문자열을 의미한다.
변수 선언과 할당
// 문자열 리터럴을 String 타입의 변수 name에 할당
String name1 = "Kim eroom";
// String 클래스의 인스턴스를 생성하는 방법
String name2 = new String("Kim eroom");
- String 타입의 변수는 String 변수명; 으로 선언 가능
- 선언한 변수에 문자열을 할당하는 방법
- 선언한 변수에 문자열 리터럴을 할당하는 방법 : 변수 = "문자열";
- String 클래스의 인스턴스를 생성하여 할당 : 변수 = new String("문자열");
1번과 2번의 공통점
- 참조 타입의 변수에 할당됨 -> 실제 문자열의 내용을 값으로 가지고 있는 것이 아니라, 문자열이 존재하는 메모리 공간 상의 주소 값을 저장 중
하지만, 문자열을 출력해보면 주소값이 아닌 문자열의 내용이 출력됨.
String name1 = "Kim eroom";
String name2 = new String("Kim eroom");
System.out.print(name1); // "Kim eroom"
System.out.print(name2); // "Kim eroom"
이것은 String 타입의 변수를 참조하면 String 클래스의 메서드인 toString() 이 자동으로 호출되기 때문
toString()은 String 타입의 변수가 저장하고 있는 주소 값에 위치한 String 인스턴스의 내용을 문자열로 반환해준다.
1번과 2번의 차이점
String name1 = "Kim eroom";
String name2 = "Kim eroom";
String name3 = new String("Kim eroom");
String name4 = new String("Kim eroom");
boolean comparison1 = name1 == "Kim eroom"; // true
boolean comparison2 = name1 == name2; // true
boolean comparison3 = name1 == name3; // false
boolean comparison4 = name3 == name4; // false
boolean comparison5 = name1.equals("Kim eroom"); // true
boolean comparison6 = name1.equals(name3); // true
boolean comparison7 = name3.equals(name4); // true
name1과 name2는 1번 방법
문자열 리터럴을 String 타입의 변수에 직접 할당하는 방법을 사용
동일한 문자열 리터럴을 두 변수에 할당하는 경우, 두 변수는 같은 문자열의 참조값을 공유
-> 문자열 주소값을 할당받았는데 그게 직접적인 문자열을 가리키는 주소 값
name3와 name4는 2번 방법
String 클래스의 인스턴스를 생성해서 String 타입의 변수에 할당하는 방법을 사용
String 클래스의 인스턴스를 생성하게 되면 문자열의 내용이 같을지라도, 별개의 인스턴스가 따로 생성됨
728x90
'개발일지 > Java' 카테고리의 다른 글
Java 증감 연산자 (0) | 2022.09.04 |
---|---|
Java String 클래스의 메서드 (0) | 2022.09.04 |
Java 타입 변환 (0) | 2022.09.04 |
Java 타입 (0) | 2022.09.04 |
Java 변수, 상수 (0) | 2022.09.04 |