1. 객체란
앞글자가 대문자인 클래스로 만든것은 변수가 아닌 객체 이다!
String s1 = "abc";
s1 은 객체
(Scanner sc의 sc도 객체임)
사실 변수가 아니지만 String만 변수라고 불러도 괜찮음
2. 객체 생성 방법이 두가지 (암시적, 명시적)
1) 암시적(주소값 같음), 명시적(주소값 다름) 객체 생성
// 암시적 객체생성
String s1 = "abc";
String s2 = "abc";
// 명시적 객체 생성
String s3 = new String();
String s4 = new String("abc");
2) 객체간의 값을 비교 .equals(값 비교) , ==(주소 비교)
암시적으로 객체를 생성시 객체의 값은 같은 heap 메모리를 공유하기 때문에 주소값이 같다. 하지만
명시적으로 객체를 생성시 우리 눈에 값이 같아보여도 각각 다른 heap메모리에 저장되기때문에 주소값이 다르다!
String 클래스는 객체간 주소 비교보다 값을 비교하는 경우가 훨씬 많기 때문에
== (주소값이 같을때 사용) 보다
.equals (단순 값을 비교할때 사용)를 써야한다!
//오류
// if( s1 == s3 ) {
// System.out.println("같습니다.");
// }
// .equals
if(s1.equals(s3)) {
System.out.println("같습니다.");
}
3. 한번 생성된 문자열의 내용은 변하지 않는다. (불변의 특징)
1) 이어 붙이기
// 이어 붙이기
// 한번 만든 문자열은 불변하다
String greet = "안녕";
greet += "하세요";
System.out.println(greet);
//결과 : 안녕하세요
2) 불변의 특징이 필요한 이유
4. String 초기화 시 값이 없을 때 '' "사용하기
String도 class여서 값이 없을 때 null을 사용해도 되지만 이어붙일때 문제가 생겨서 비추
'JAVA' 카테고리의 다른 글
[Java_08] 클래스 기초 (0) | 2023.03.08 |
---|---|
[Java_07] String method (0) | 2023.03.08 |
[Java_05] multi_array (0) | 2023.03.08 |
[Java_04] single array (0) | 2023.03.08 |
[Java_03] 제어문 ( for,while,if,switch) (2) | 2023.03.03 |