본문 바로가기
카테고리 없음

String 클래스를 사용한다면 반드시 필독

by devebucks 2020. 10. 13.
728x90

안녕하세요.

요즘 Java를 열심히 공부하고 있습니다. 

공부하면서 String 클래스를 이번 기회에 정확히 공부하고 공유해보고자 이번 포스트를 작성합니다.

 

1. Object클래스의 equals()메서드와 String 클래스의 equals()메서드는 다른 기능을 하고 있습니다.

Object.equals() String.equals()
- 참조하는 주소를 비교합니다.
- 아래의 코드는 Obejct클래스에 정의된 equals()메서드입니다.
- "==" 비교연산자로 주소를 비교하고 있습니다.
- 변수 값을 비교합니다.
- 아래의 코드는 String 클래스에 정의된 Object 클래스의 equals()메서드를 오버라이딩해서 재정의를 하였습니다.
- value로 값을 비교하고 있음을 정의하고 있습니다.

 

2. String과 StringBuffer의 차이점

String 클래스 StringBuffer클래스
- 한번 선언한 값은 변경할 수 없습니다.
- String a = "a"라고 하면 String 인스턴스가 생성되는 것이며, 빈 메모리주소에 "a"라는 값을 가지는 메모리 영역이 생긴다.
- 만약 String a ="b"라고 한다면, 참조변수 a가 참조하는 "a"의 값을 가지는 메모리주소에 "b"값을 덮어쓰우는 것이 아니라, 새로운 인스턴스가 생성되어서 새로운 빈 메모리영역에 "b"값이 저장됩니다.
 - String a = a +"b"를 해도 마찬가지로 새로운 인스턴스로 생성된다.
- 문자열 연산이 많이 필요한 경우 그만큼 메모리 사용량이 늘어나기 때문에 정적인 값을 가지는 데이터에만 사용할 것이 권장됩니다.

- String 클래스와 달리, StringBuffer 클래스는 선언된 문자를 수정해도 동일한 주소의 문자가 수정됩니다.

 

3. String 클래스를 선언하는 방법

- 문자열 리터럴을 지정하는 방법

String a = "a"
String b = "a"

System.out.println(a == b) //true
System.out.println(a.equals(b)); //true

a,b 참조변수는 같은 주소를 참조하게 됨

동일한 값을 가지는 문자열이면, 하나의 인스턴스만 생성됩니다.

 

- String 인스턴스를 생성하는 방법

String a = new String("a");
String b = new String("a");

System.out.println(a == b); //false
System.out.println(a.equals(b)); //true

a, b 참조변수는 각자 다른 주소를 참조하게 됩니다.

728x90

댓글