## String_API
[ 특징 ]
JAVA String은 같은주소에 다른String으로 변환이 안됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package ex0805;
public class API_String {
public static void main(String[] args) {
// 자바에서는 문자열도 객체이다.
// 문자열 비교는 == 절대쓰지말것!!! -> 주소비교하기 때문!!!
// 같은 문자열을 입력받으면 같은 주소를 할당받음!! -> 자바가 할당할때 문자열이 같은지 확인하고 문자열이 같으면
// 같은 주소 할당, 문자열이 다르면 다른 주소 할당.
String s1 = "seoul"; //s1에는 주소가 저장 -> 오버라이딩으로 문자열출력하게 재정의
String s2 = "seoul"; //메모리할당을 한번만함 -> s1,s2 같은 주소 공유
String s3 = new String("seoul"); //new만나서 객체 생성 -> 주소가 바뀜
System.out.println(s1+":"+s2+":"+s3);
//문자열에서의 == : 주소 비교
System.out.println(s1==s2); //true
System.out.println(s1==s3); //false
//String에서의 equals() : 값을 비교 --> 오버라이딩
//Object의 equals()와 다름!
System.out.println(s1.equals(s2)); //true
System.out.println(s1.equals(s3)); //true
System.out.println(s1.hashCode()); //109324212
System.out.println(s2.hashCode()); //109324212
System.out.println(s3.hashCode()); //109324212
//<<불변의 법칙! 절대로 스트링의 값을 바꿀 수 없음>>
s1+="Korea"; // 절대로 이 연산을 여러번 반복하면 안됨!
// 기존의 s1: seoul 주소를 가진 문자열이 변하는게 아니라
// 다른 문자가 추가되면 다시영역의 메모리를 할당받아서 주소가 변함!
// 기존 주소의 문자열을 바꿀 수 없다!!!!
System.out.println(s1); //seoulKorea
System.out.println(s2); //seoul
System.out.println(s1==s2); //false
}
}
|
cs |
[ 여러 String API ]
String s = "seoul korea";
# s.substring(int a, int b)
: a번째 인덱스에서 b-1까지의 문자열을 추출
-> 이 때, a>b 런타임오류 발생.
# s.charAt(int n)
: n번째 인덱스에 있는 한 문자를 출력
# s.equals(String a)
: string a와 s의 값을 비교해서 true, false 반환
** 주의! equals()는 string에서만 값을 비교, 다른 클래스에서는 주소를 비교한다!
# ==
: 문자열에서 주소를 비교해준다.
# s.equalsIgnoreCase(String a)
: 대문자와 소문자를 구분하지 않고 문자열을 비교해 true, false 반환
# s.startWith(String a)
: String s의 앞의 문자열만 String a와 비교하여 true, false 반환
--> 0번째 인덱스부터 비교
# s.endsWith(String a)
: String s의 뒤의 문자열만 String a와 비교하여 true, false 반환
--> 마지막 인덱스부터 비교
# s.compareTo(String a)
: 달라지는 부분의 아스키코드 값의 차이를 반환
ex) s = "seoul korea" , a = "seoul ccatstststs" --> k(107) - c(99) = 8
# s.indexOf(String a)
: String s에 String a값이 있으면 해당 인덱스의 처음 값 반환, 찾는 문자열이 없으면 -1 반환
** a가 s에 여러 개면 가장 처음 값 리턴
# s.indexOf(String a, int n)
: String s의 n번 인덱스 값부터 String a값이 있으면 해당 인덱스의 처음 값 반환, 찾는 문자열이
없으면 -1 반환
# s.replace(string a, string b)
: String s 에서 a문자열을 b문자열로 변환
** 정규식 사용 불가
# s.replaceAll(string a, string b)
: String s 에서 a문자열을 b문자열로 변환
** 정규식 사용 가능
-> ex) s1 = s.replaceAll("\\d|\\s", ""); 정규식에서 숫자 : \\d, or : | , 엔터와 탭을 포함한 공백 : \\s
-> ex) s1 = s.replaceAll("[가-힣]", ""); 대괄호하고 가~힣까지 : s1에서 한글을 ""로 변환
# s.trim()
: 가장 왼쪽과 가장 오른쪽의 공백 제거
-> ex) s = " 사 랑 "; => System.out.println(":"+s.trim()+":"); => "사 랑"
# s.format("%d" , int a)
-> ex) a =123456; => s = String.format("%,d",a); => 123,456
# s.getBytes()
: 해당되는 문자의 아스키값을 배열로 반환
-> ex) s = "ABC" => byte[] bb = s.getBytes(); => 65 66 67
# s.toUpperCase();
: 문자열 s에서 소문자를 대문자로 변환
# s.toLowerCase();
: 문자열 s에서 대문자를 소문자로 변환
## StringBuffer
StringBuffer sb3 = new StringBuffer();
# sb3.capacity()
: 버퍼의 크기를 출력
# sb3.append(String a)
: String sb3에 문자열 a 삽입
# sb3.insert(int a, String n)
: sb3 문자열의 a번째에 문자열 n 삽입
# sb3.delete(int a, int b)
: sb3 문자열의 a번째 인덱스 부터 b개 삭제
# sb3.length()
: stringBuffer의 길이 출력
# sb3.trimToSize()
: 버퍼의 크기를 문자열 길이 만큼 줄이기
EX) StringBuffer sb3 = new StringBuffer("123456789")
sb3.delete(0,2).replace(1,2,"xy").delete(4,6) => 3xy589
'JAVA' 카테고리의 다른 글
[JAVA] 생성자 (4) | 2020.08.11 |
---|---|
[JAVA]인터페이스 (Interface) (1) | 2020.08.11 |
[JAVA] 비정형인자 (0) | 2020.08.04 |
[JAVA] 재귀 호출 (0) | 2020.08.04 |
[JAVA] 메소드 (0) | 2020.08.03 |