기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 박싱(Boxing)이라고 합니다.
반면 래퍼 클래스의 인스턴스에 저장된 값을 다시 기본 타입의 데이터로 꺼내는 과정을 언박싱(UnBoxing)이라고 합니다.
Person1 p1 = new Person1("홍길동");
System.out.println(p1.equals(new Person1("홍길동"))); // true
System.out.println(p1.equals(new Person1("최명태"))); // false
class Person1 {
String name;
public Person1(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Person1) {
Person1 person = (Person1) obj;
if (this.name.equals(person.name))
return true;
}
return false;
}
}
String s1 = new String("java");
String s2 = new String("java");
String s3 = s2;
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s2 == s3);
System.out.println(s2.equals(s3));
if(s1 == s2)
System.out.println("s1, s2 참조 대상 같다.");
else
System.out.println("s1, s2 참조 대상 다르다. ");
if(s2 == s3)
System.out.println("s2, s3 참조 대상 같다.");
else
System.out.println("s2, s3 참조 대상 다르다. ");
if(s1.equals(s2))
System.out.println("s1, s2 내용 동일하다.");
else
System.out.println("s1, s2 내용 다르다.");
if(s2.equals(s3))
System.out.println("s2, s3 내용 동일하다.");
else
System.out.println("s2, s3 내용 다르다.");
결과
false
true
true
true
s1, s2 참조 대상 다르다.
s2, s3 참조 대상 같다.
s1, s2 내용 동일하다.
s2, s3 내용 동일하다.
이유
s1,s2 에는 각각의 참조하고 있는 메모리의 주소값이 들어가 있고, s3에는 s2가 참고하고 있는 주소값을 같이 참조하고 있는 상태.
문자열 비교시 equals를 사용하지 않으면 참조하고 있는 주소값을 비교하게 됨.
equals를 사용하면 참조하는 주소값에 있는 내용을 비교하게 됨
문자열을 입력하세요. 빈칸이 있어도 되고 영어 한글 모두 됩니다.
I Love you
Love youI
Love youI
ove youI L
ve youI Lo
e youI Lov
youI Love
youI Love
ouI Love y
uI Love yo
I Love you
Scanner sc = new Scanner(System.in);
System.out.println("문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.");
String input = sc.nextLine();
for (int i = 0; i <= input.length(); i++) {
System.out.print(input.substring(i));
System.out.println(input.substring(0, i));
}
sc.close();