String 변수 = "문자열";
그런데 문자열 리터럴이 동일하다면 String 객체를 공유하도록 되어있다.
즉
String lang1 = "java";
String lang2 = "java";
와 같이 lang1,lang2 변수가 동일한 문자열 리터럴 "java"를 참조하다면
두 변수는 같은 String 객체를 공유하게 된다.
String lang1 = new String("java");
String lang2 = new String("java");
이 경우에는 lang1,lang2는 서로 다른 String 객체를 참조하게 된다.
String lang1 = "java";
String lang2 = "java";
String lang3 = new String("java");
의 경우를 보도록 하자.
public class StringEqual {
public static void main(String[] args) {
String lang1 = "java";
String lang2 = "java";
String lang3 = new String("java");
System.out.println(lang1 == lang2);
System.out.println(lang2 == lang3);
System.out.println(lang1 == lang3);
}
}
output
true
false
false
lang3은 String객체를 별도로 생성했기 때문에 lang1,lang2과 객체의 번지수가 다르다.
public class StringEqual {
public static void main(String[] args) {
String lang1 = "java";
String lang2 = "java";
String lang3 = new String("java");
System.out.println(lang1.equals(lang2));
System.out.println(lang2.equals(lang3));
System.out.println(lang1.equals(lang3));
}
}
equals()메소드는 원본 문자열과 매개값의 문자열이 동일한지 비교해준다!
output
true
true
true
3.equalsIgnoreCase() 메소드
대소문자를 구분하지 않고 비교하고 싶다면 equals()대신 equalsIgnoreCase()를 사용한다.
public class StringEqual {
public static void main(String[] args) {
String str1 = "apple";
String str2 = "APPLE";
if(str1.equalsIgnoreCase(str2))
System.out.println(str1 + "==" + str2);
}
}
String[] 배열의 항목은 String변수와 동일하게 취급된다.
public class StringEqual {
public static void main(String[] args) {
String[] strArr = new String[3];
strArr[0] = "java";
strArr[1] = "java";
strArr[2] = new String("java");
System.out.println(strArr[0] == strArr[1]);
System.out.println(strArr[0] == strArr[2]);
System.out.println(strArr[0].equals(strArr[2]));
}
}
output
true
false
true
String[] name = new String[3]; //3개의 문자열을 담을 수 있는 배열
참조형 변수의 기본값은 null이므로 각 요소의 값은 null로 초기화된다.
public class StringArray {
public static void main(String[] args) {
String[] name = new String[3]; //배열 생성
for(int i = 0; i< name.length; i++){
System.out.println(name[i]);
}
}
}
output
null
null
null
배열의 각 요소(인덱스)에 문자열을 지정한다.
String[] name = new String[3]; //배열 생성
name[0] = "kim";
name[1] = "lee";
name[2] = "park";
또는
String[] name = new String[]{"kim","lee","choi"};
String[] name = {"kim","lee","choi"};
public class StringArray {
public static void main(String[] args) {
String[] name = new String[3]; //배열 생성
name[0] = "kim";
name[1] = "lee";
name[2] = "park";
for(int i = 0; i< name.length; i++){
System.out.println(name[i]);
}
}
}