String a = "안녕하세요"
String b = "홍길동입니다"
//concat 메소드 사용
System.out.println(a+b); //안녕하세요홍길동입니다
System.out.println(b+c); //홍길동입니다안녕하세요
String 클래스
- 자바의 문자열 String은 기본 타입이 아닌 '클래스'이다.
- 따라서, String의 타입은 참조타입이 된다.
- String 문자열을 지정할 때에는 반드시 큰 따옴표("")를 사용한다
>>(작은 따옴표('')는 char 기본타입에 사용된다)
>> String str = 'str' // 오류발생
String 클래스 선언하기
String 클래스 선언 방식에는 다음 두 가지가 있다.
String str1 = new String("문자열 입니다");
String str2 = "문자열 입니다";
동일한 문자열
여러개의 변수에 동일한 문자열을 저장하면 어떻게 될까?
그 것은 문자열의 선언 방식에 따라 다르다
1) new 연산자를 이용하여 String 인스턴스를 생성한 경우
이 경우에는 new 연산자를 통해 String 인스턴스를 2개 생성하기 때문에, 각기 다른 메모리주소를 가지는 참조타입 변수가 2개 생성된다. 따라서, str1과 str2의 값은 주소값(1001, 1002)로, str1 == str2의 결과는 false가 된다.
String str1 = new String("문자열 입니다")
Strting str2 = new String("문자열 입니다")
System.out.println(str1 == str2); //false
2) 문자열을 그대로 저장한 경우
new 연산자를 통하지 않고 문자열을 그대로 저장한 경우, 해당 문자열은 힙 메모리 영역의 String pool에 저장된다.
이 String pool에는 동일한 문자열을 저장할 수 없으므로, 동일한 문자열은 동일한 메모리 주소를 가진다.
따라서, 각기 다른 변수에 같은 문자열을 지정하면 같은 메모리 주소를 갖게 되며, str1 == str2의 결과는 true가 된다.
String str1 = "문자열 입니다";
String str2 = "문자열 입니다";
System.out.println(str1 == str2); //true
문자열 비교
앞에서 설명했듯이, String은 클래스이고, 주소값을 가지는 참조타입의 인스턴스이다.
따라서 == 등의 연산자를 이용하면 '주소값'을 비교하게 된다.
동일한 문자열인지 확인하려면 equals메소드를 사용하는 것이 좋다.
String a = new String("Hello");
String b = new String("Hello")
String c = "Hello";
System.out.println(a.equals(b)); //true
System.out.println(a.equals(c)); //true
System.out.println(b.equals(c)); //true
문자열 합치기
1) concat 메소드 사용
String a = "안녕하세요"
String b = "홍길동입니다"
//concat 메소드 사용
System.out.println(a.concat(b)); //안녕하세요홍길동입니다
System.out.println(b.concat(a)); //홍길동입니다안녕하세요
2) + 연산자 사용
String a = "안녕하세요"
String b = "홍길동입니다"
//+연산자 사용
System.out.println(a+b); //안녕하세요홍길동입니다
System.out.println(b+a); //홍길동입니다안녕하세요
두 방법 중에서는 사용성과 성능 차원에서 +연산자를 많이 사용한다
문자열 자르기
substring 메소드
- substring메소드를 이용헤 원하는 위치의 문자열을 가져올 수 있다.
- 문자열은 한 글자마다 하나의 인덱스를 가지는데, 가져올 문자열의 시작 인덱스와 끝 인덱스+1 을 매개변수로 받는다.
- substring(a, b)에서 b인덱스에 해당하는 문자열은 가져오지 않기 때문에 원하는 문자열 인덱스에 +1을 매개변수로 입력한다.
String str = "안녕하세요 홍길동입니다";
System.out.println(str.substring(6,9)); //홍길동
'Language > java' 카테고리의 다른 글
java 기본 9: 접근 제한자(public/protected/friendly/default/private) (0) | 2023.01.05 |
---|---|
java 기초 8: 상속 (0) | 2023.01.05 |
java 기초 6: 참조 변수 (0) | 2023.01.04 |
java 기초 5: 클래스와 객체 (0) | 2023.01.03 |
java 기초 4: 반복문(while, do~while, for)과 탈출(break, continue) (0) | 2023.01.02 |