관리 메뉴

100세까지 코딩

[자바 공부] 문자열 비교 (정처기 문제) 본문

JAVA

[자바 공부] 문자열 비교 (정처기 문제)

100세까지 코딩 2023. 8. 8. 19:12
문제
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는 안에 데이터값을 비교
확인

 

 정보처리기사 실기시험에도 나왔으니 확실히 공부해 두자!!