String s1 = new String("hello"); String s2 = "hello";차이점

960 단어 String
String s1 = new String("hello");
String s2 = "hello";
System.out.println(s1 == s2);//false
System.out.pringln(s1.equals(s2));//true

String s1 = new String("hello")의 경우
  • 우선 메모리에 String 유형을 저장하는 대상을 신청하고 주소 값을 인용s1에 부여한다.
  • 방법구의 상량 탱크에서 Hello가 있는지 없는지를 찾습니다.
  • 없습니다. 상량 탱크에 공간을 열어 Hello를 저장하고 이 공간의 주소 값을 더미에 저장된 대상의 공간에 부여합니다
  • 있으면 헬로가 있는 공간의 주소 값을 무더기에 저장된 대상의 공간
  • 에 직접 준다.

    String s2 = "hello"의 경우
  • 상기 과정 때문에 상수지에 Hello가 저장되어 있는데 이때 Hello가 있는 공간의 주소 값을 인용 s2에 부여하기만 하면 된다.

  • 종합적으로 s1은 메모리에 저장된 주소 값이고 s2는 상량 탱크에 저장된 주소 값이기 때문에 s1==s2는false이다.또한String류의 equals 방법으로 toString을 다시 썼기 때문에 두 문자열의 내용을 비교한 결과true였다.
    검토:
    ==, 비교 연산자, 기본 유형과 참조 유형을 비교할 수 있습니다.
  • 기본 유형을 비교할 때 값이 같은지 비교
  • 인용 유형을 비교할 때 주소 값이 같은지 비교
  • equals 메서드, 참조 유형만 비교하는 Object 클래스의 메서드
  • 다시 쓰지 않았을 때 주소 값 비교
  • 다시 쓴 후에 일반적으로 비교하는 것은 가리키는 대상의 내용을 인용하는 것이다
  • 좋은 웹페이지 즐겨찾기