100세까지 코딩
[자바 공부] 문자열 비교 (정처기 문제) 본문
문제
public class Main {
public static void main(String[] args){
String a = "hello world";
String b = "hello world";
String c = a;
String d = new String("hello world");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(a==d);
System.out.println(a.equals(b));
System.out.println(b.equals(d));
}
}
풀기 전 생각
- false // 다른 주소를 만드니깐?
- true // c = a라고 했으니깐
- false // new String으로 새로운 주소를 만들었으니깐
- true // equals는 안에 문자열을 비교
- true // equals는 안에 문자열을 비교
풀이
String 변수를 생성하는 방법은 두 가지
1. 리터럴을 이용 // Heap영역 내 String pool에 생성
2. new 연산자를 이용 // Heap영역에 생성
String 변수를 비교하는 방법은 세 가지
1. == // 주소값을 비교
2. equals // 데이터값 비교
3. compareTo // 데이터값 비교하는 동시에 사전적인 순서까지 결과 값으로 리턴
0 : 두 개의 문자열이 동일
+ : 호출하는 객체가 인자보다 사전적으로 순서가 앞일 때
- : 호출하는 객체가 인자보다 사전적으로 순서가 뒤일 때
정답
- true // String pool안에 같은 주소 가리킴
- true // String pool안에 같은 주소 가리킴
- false // new String으로 새로운 주소를 만들었으니깐
- true // equals는 안에 데이터값을 비교
- true // equals는 안에 데이터값을 비교
확인
정보처리기사 실기시험에도 나왔으니 확실히 공부해 두자!!
'JAVA' 카테고리의 다른 글
[자바 공부] Arrays 메서드 정리 (0) | 2023.09.08 |
---|---|
[자바 공부] 형 변환 함수 차이 (parseXXX, valueOf, toString) (0) | 2023.09.04 |
[자바 공부] 문자열 (String, StringBuffer, StringBuilder) (0) | 2023.09.02 |
[자바 공부] 상속과 바인딩 (0) | 2023.08.12 |
[자바 공부] 상속 & 생성자 (정처기 문제) (0) | 2023.08.10 |