문자열은 기초 자료형이 아니다. 객체이다.
객체는 하프(힢)이라는 공간에 저장된다.
String s = new String("Hello World!"); // 선언과 동시에 초기화
s == 참조변수
String 클래스의 메소드
charAt(int index) : char해당하는 위치의 문자를 반환
equals(Ovject anObject) : boolean 문자열이 같은지 비교한다
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello";
s3 == s4 // true 처음은 새로 만들어도 s4 얘는 s3의 Hello 그대로 가져옴
s1 == s2 // false 이유는 참조형 변수라서 주소값을 비교하기 때문. new연산자를 사용해서 둘다 새로운 객체이다.
s1.equals(s2) // true , 대소문자 구분한다. Hello와 hello 구분하면 안댐
s1.equalsIgnoreCase(s2) // Hello, hello를 넣어도 true이다. 대소문자 구분을 안 한다.
s1.concat(s2) // HelloHello 문자 두개를 붙인다 s1+s2와 같은 기능이다.
s1.isEmpty() // false 이 메소드는 length()가 0이면 true를 반환한다.
compareTo(Stirng anotherString) // 사전적 순서로 문자열을 비교한다. 앞에 있으면 -1, 같으면 0, 뒤에 있으면 1이 반환, 내가 작으면 음수 내가 크면 양수 사전적 순서라는 것은 사전에 누가 먼저 나오는지 라고 생각하면 편하다. "abcde"와 "abd"를 비교하면 "abd"가 더 크다.
s1 = Hello, s2 = World
s1.compareTo(s2) // s1 - s2 =-15, s2 - s1 = 15
/* String 객체 == 상수 문자열
* 기존에 참조하던 객체를 바꾸는게 아니라 참조 주소가 변경된것이다.
* String s1 = new String("Hello");
* s1 = s1.toUpperCase();
*
* Hello 값이 어디 가는게 아니라 그대로 있고 s1은 참조하던 주소가 변경된것이다.
* Hello == 쓰레기
*
*/
public class StringTest {
public static void main(String[] args) {
String proverb = "A barking dog";
String s1, s2, s3, s4;
System.out.println("문자열의 길이 ="+ proverb.length());
s1 = proverb.concat(" never Bites!"); // 문자열 결합 + 연산자와 같음
s2 = proverb.replace('b', 'B'); // 문자 교환
s3 = proverb.substring(2, 5); // 인덱스 2이상 5미만
s4 = proverb.toUpperCase(); // 대문자 변환
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
댓글 없음:
댓글 쓰기