🎯 목표 : String 클래스의 이해와 메소드 확인
📒 String Class
❗특징
- chas 배열로 생성된 불변 객체의 값이다.
- 문자열 리터럴은 프로그램 실행시 자동으로 생성된다. - constant pool에 저장
- 같은 내용의 문자열 리터럴은 하나만 만들어진다.
📌 특징 분석
👉 String 객체의 비교
String a = "Hello";
String b = new String("Hello");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true
- 참조변수 a, b는 문자열 객체를 참조하고 있다.
- == 연산자로 비교하면 false가 출력되고, ==연산자는 값을 비교하는것이 아니라 객체가 변수로 Input 되면 해당 객체의 주소를 비교하는 것이다.
- 참조변수 a는 문자열 리터럴로 정의된 문자열 객체로서 String constant pool에 저장이 되고, 참조변수 b는 new 연산자로 생성된 객체로 heap 영역에 저장이된다.
- 문자열의 객체의 값을 비교할때는 String 클래스의 메소드 equals()를 사용한다. equals() 메소드는 Object의 메소드이며 Object 클래스를 상속받은 String 클래스에서 오버라이딩 되어있는 메소드다.
👉 불변의 객체
String a = "ab";
String b = "cd";
a = a + b;
- 리터럴로 정의된 문자열 객체는 String constant pool에 값은 같더라도 고유한 주소를 가지고 있다.
- 참조변수 a 와 b 는 각 리터럴을 가지고 있는 값을 참조하고 있는것이 아니라 고유한 주소를 참조하고 있는것이며, a + b로 참조변수 a를 재정의 하게 되면, "abcd" 문자열 객체가 새로 생성되어 객체가 가지고 있는 고유한 주소를 새롭게 참조하게된다.
- a를 재정의 한 후에도 참조변수 a가 기존에 참조하고 있던 주소는 삭제되지 않으며 불변이다.
📌 String 클래스의 메소드
👉 String(String s)
- 주어진 문자열 s 를 같는 String 인스턴스를 생성한다.
String s = new String("Hello");
s = "Hello"
👉 String(char[] value)
- 주어진 문자열 value를 갖는 String 인스턴스를 생성한다.
char[] a = {'H','e','l','l','o'};
String b = new String(a);
b = "Hello"
👉 String(Stringbuffer buf)
- StringBuffer인스턴스가 갖고 있는 문자열과 같은 내용의 String 인스턴스를 생성한다.
StringBuffer a = new StringBuffer("Hello");
String s = new String(a);
s = "Hello"
👉 char charAt(int index)
- 지정된 위치 Index에 있는 문자를 알려준다 // 0~
String n = "12345";
char a = n.charAt(1);
a = 2
👉 int compareTo(String str)
- 문자열 str과 사전순서로 비교하여 같으면 0 사전순서로 이전이면 -1, 이후면 1을 반환한다.
int i = "aaa".compareTo("aaa");
int i1 = "aaa".compareTo("bbb");
int i2 = "bbb".compareTo("aaa");
i = 0
i1 = -1
i2 = 1
👉 length()
- int 타입으로 문자열의 길이 반환
String a = "abcde";
System.out.print(a.length());
//출력값 5
👉 indexOf()
- 해당 문자의 위치를 int 타입으로 반환
- 없을 경우 -1 반환
String a = new String("abcde");
System.out.print(a.indexOf(c));
//출력값 2
👉 replaceAll()
- 문자열 전체를 교체한다.
String a = new String("abcde");
System.out.print(text.replaceAll("abcde", "12345"));
// 출력값 12345
👉 split()
- 문자열을 지정된 분리자로 나누어 배열에 담아 반환
String a = "Cat,Dog,Bird";
String[] r = a.split(",");
System.out.println(Arrays.toString(r));
[Cat, Dog, Bird]
👉 join()
- 문자열의 배열을 분리자로 나누어 결합.
String a = "Cat,Dog,Bird";
String[] r = a.split(",");
String str = String.join("-", r);
System.out.println(str);
//출력값 Cat-Dog-Bird'Language > JAVA' 카테고리의 다른 글
| Java StringBuffer Class (0) | 2022.08.26 |
|---|---|
| Java 문자열과 기본형 형변환 (0) | 2022.08.26 |
| Java 내부클래스와 익명클래스 - OOP (0) | 2022.08.26 |
| Java Interface의 다형성 - OOP_추상화 (0) | 2022.08.24 |
| Java Instance Array - OOP (0) | 2022.08.24 |