1. 문자열(String)의 생성방법
2. String 클래스의 주요 메소드
: 문자열은 객체이므로 String 클래스에서 생성된 객체 입니다. 따라서 String 클래스 안에 선언된 메소드를 적용해 볼 수 있습니다.
▶ 문자열에서 특정 위치의 글자 가져오기
: charAt()은 글자 내에서 특정 위치의 글자를 char로 반환해 줍니다.
String str = "ABCDE";
char ch0 = str.charAt(0); // 맨앞의 글자인 A를 반환
▶ 문자열의 길이는 length()
public class StringClassTest {
public static void main(String[] args) {
// length()와 charAt()을 이용한 글자 출력
String str = "ABCDE";
int len = str.length();
for (int i = 0; i < len; i++) {
System.out.println(str.charAt(i));
}
}
}
결과
A
B
C
D
E
▶ 특정 문자의 위치를 찾아내는 indexof()
- 결과가 0 이상이면 원하는 대상이 문자열에 있다는 것을 의미
- 결과가 -1이면 배열의 인덱스 번호가 -1이 나올 수 없다고 기억하면 됩니다.
▶ 문자열을 자라는 substring()
- substring(int index) : 해당 index 번호에서 부터 자른다.
- substring(int start, int end) : 해당 start 위치에서, end 직전까지 자른다.
▶ 문자열의 내용이 같은지를 비교하는 equals()
: 다른 문자열과 내용물이 일치하는지를 boolean으로 알려 줍니다.
▶ 문자열의 equals()와 '==' 는 다르다
'==' 연산자의 의미
- 기본 자료형일 경우에는 변수 안의 내용물을 비교한다.
- 객체 자료형일 경우에는 변수 안의 레퍼런스가 같은곳을 가리키는지를 비교한다.
public class StringClassTest {
public static void main(String[] args) {
Scanner s1 = new Scanner(System.in);
Scanner s2 = s1;
System.out.println(s1 == s2);
}
}
결과
true
: 객체 자료형일 경우에 동일한 객체를 가리키는지를 비교하므로 true
public class StringClassTest {
public static void main(String[] args) {
String str1 = new String("AAA");
String str2 = new String("AAA");
System.out.println(str1 == str2);
}
}
결과
false
: new라는 키워드는 메모리에 새로운 공간을 할당하는 역할을 합니다. 즉, 위의 str1과 str2는 메모리에서 전혀 다른 객체를 의미합니다. 즉 str1,str2라는 변수에 담긴 레퍼런스들은 각자 다른 문자열을 의미하고 있습니다. 결국 결과는 false
public class StringClassTest {
public static void main(String[] args) {
String str1 = "AAA";
String str2 = "AAA";
System.out.println(str1 == str2);
}
}
결과
true
: 기본형 처럼 문자열을 선언했을 경우 문자열 자체는 char[]로 만들어 지며 JAVA는 같은 문자열은 메모리상에 한번만 만들어 두고, 같은 문자열를 의미 할때는 같은 메모리 위치를 가리키도록 설계 되었습니다. 그러므로 위의 비교는 true.
▶ 문자열의 법칙
- 같은 내용의 문자열 객체는 한번만 만들어 진다.
- 문자열이 변경되면 새로운 객체로 다시 만들어낸다(불변, Immutable)
public class StringClassTest {
public static void main(String[] args) {
String str1 = "ABCDE";
String str2 = str1.substring(3);
//str1에 대해서 잘라내기 작업후에도 아무 변화가 없다.
System.out.println("str1 : " + str1);
System.out.println("str2 : " + str2);
}
}
결과
str1 : ABCDE
str2 : DE
public class StringClassTest {
public static void main(String[] args) {
String str1 = "ABCDE";
String str2 = str1; // 복사하였으므로 같은 문자열
str1 = str1 + "zzzz"; //str1을 일방적으로 변경
System.out.println(str1);
System.out.println(str2);
}
}
결과
ABCDEzzzz
ABCDE
▶ 문자열과 배열
: 문자열을 char[] 혹은 byte[]로 변형할 수 있습니다.
import java.util.Arrays;
public class StringClassTest {
public static void main(String[] args) {
String str = "한글은";
char[] arr1 = str.toCharArray();
System.out.println(Arrays.toString(arr1));
byte[] arr2 = str.getBytes();
System.out.println(Arrays.toString(arr2));
}
}
결과
[한, 글, 은]
[-19, -107, -100, -22, -72, -128, -20, -99, -128]
[JAVA] BigDecimal - 정확한 소수 표현 (0) | 2012.07.28 |
---|---|
[JAVA] Date, Calendar, long - 시간처리 (0) | 2012.07.28 |
Editplus에서 컴파일하고 실행할 수 있도록 설정하는 방법 (0) | 2011.06.25 |
Exercise JAVA Class (0) | 2010.10.30 |
JAVA Class와 Member (0) | 2010.10.30 |
댓글 영역