String클래스의 명시적 개체 생성법
String msg = new String("hello");
String클래스의 암시적 개체 생성법
String str = "hello";
동일성비교(==): 기본 자료형에 사용함.
System.out.println(msg == str);
-----------Console------------
false
동등성비교(.equal( )): 참조 자료형에 사용함.
System.out.println(msg.equals(str));
-------------Console-----------------
true
String 클래스의 불변적 특징
- 문자열을 변경하기 위해서는 기존 문자열을 변경하지 못하고 새로운 문자열을 생성할 수 있다.
- 이런 작업을 반복하게 된다면 쓰레기 객체를 생성하여 메모리 효율을 떨어뜨리게 된다.
- 이를 보완하기 위해 StringBuffer클래스를 사용하여 문자열을 수정/변경 할 수 있다.
- StringBuffer로 수정 완료 후 최종적인 문자열을 String으로 저장한다. (보편적으로 String을 쓰기 때문에)
String msg = "hello";
String str = msg + "hello world";
System.out.println(msg == str);
----------Console----------------
false
StringBuffer클래스
- append( )메서드를 이용해서 문자(열) 추가
StringBuffer sb = new StringBuffer("hi ");
sb.append("hello");
sb.append("world");
sb.append("!");
String msg = sb.toString();
System.out.println(msg);
-----------------Console--------------------
hi helloworld!
String클래스의 주요 메서드
charAt( ) 메서드
- 특정 인덱스의 문자를 반환하는 메서드
- msg.charAt(a)
String msg_char = "nike";
char c = msg_char.charAt(0);
System.out.println(c);
---------Console------------
n
-----------Test3클래스---------------
public void w1(String msg, int idx) {
char c = msg.charAt(idx);
System.out.println(c);
}
---------------main------------------
Test3 t3 = new Test3();
t3.w1("hello", 0);
-------------Console-----------------
h
length( ) 메서드
- 문자열의 길이(글자 수)를 반환하는 메서드
String msg = "hello";
int size = msg.length();
System.out.println(size);
---------Console---------
5
trim( ) 메서드
- 불필요한 좌우 공백을 제거하는 메서드
public void w4() {
String msg = " hello world ";
System.out.println(msg);
msg = msg.trim();
System.out.println(msg);
}
----------------Console--------------------
hello world
hello world
substring( ) 메서드
- 문자열을 잘라내주는 메서드
- msg.substring(a, b)
-> a이상 b미만
String msg = "hello_ world_1234";
String str = msg.substring(13);
System.out.println(str);
--------------Console-------------
1234
public void w51(String msg, int beginIdx, int endIdx) {
String str = msg.substring(beginIdx, endIdx);
System.out.println(str);
}
----------------------main------------------------------
t3.w51("hello_1234_world,",6,10);
---------------------Console----------------------------
1234
indexOf( ) 메서드
- 문자열에서 특정 문자의 index찾기
- msg.indexOf('a')
-> 문자열 msg 에서 처음 a가 나올때의 index
public void w6() {
String msg = "s_zeaie33z3a9kzfala_도_라_에몽.png";
int idx = msg.indexOf('_');
System.out.println(idx);
}
-------------------Console----------------------------
2
- msg.indexOf('a', b)
-> 문자열 msg에서 여러개의 문자a에서 인덱스b 이후에 처음으로 등장하는 a의 index
public void w61() {
String msg = "s_zeaie33z3a9kzfala_도_라_에몽.png";
int fisrt_underbar_idx = msg.indexOf('_');
int second_underbar_idx = msg.indexOf('_', fisrt_underbar_idx+1);
System.out.println(second_underbar_idx);
}
----------------------Console-----------------------------------------
19
- 활용
-> 문자열 중간을 잘라내고 싶지만 index를 알지 못해서 substring을 사용하기 힘들 때
public void w62() {
String msg = "s_zeaie33z3a9kzfala_도_라_에몽.png";
int fisrt_underbar_idx = msg.indexOf('_');
int second_underbar_idx = msg.indexOf('_', fisrt_underbar_idx+1);
String str = msg.substring(fisrt_underbar_idx+1, second_underbar_idx);
System.out.println(str);
}
--------------------------Console------------------------------------------
zeaie33z3a9kzfala
lastIndexOf( ) 메서드
- 문자열에서 특정 문자가 마지막으로 등장하는 위치의 인덱스를 반환
- msg.lastIndexOf('a')
public void w7() {
String filename = "helloworld.png.dat.xls.txt.gif.zip.hwp.jpg";
int lastIdx = filename.lastIndexOf('.');
System.out.println(lastIdx);
String formatname = filename.substring(lastIdx+1);
System.out.println(formatname);
}
--------------------------------Console-------------------------------
38
jpg
- 위처럼 확장자명을 알 수 있다.
toUpperCase( )/ toLowerCase( ) 메서드
- 문자열을 대문자/소문자로 변환하여 반환
public void w8(String msg) {
String str1 = msg.toUpperCase();
String str2 = msg.toLowerCase();
System.out.println(str1);
System.out.println(str2);
--------------main-------------------
t3.w8("Nike");
------------Console------------------
NIKE
nike
split( ) 메서드
- 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환
public void w91() {
String data = "m001#kim##vip#3000#seoul#01011112222#";
String[] arr = data.split("#");
for(int i=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
}
-------------------------Console--------------------------
m001
kim
// ##사이의 값을 토큰으로 인식함
vip
3000
seoul
01011112222
---->이를 보완하기 위해 StringTokenizer클래스를 사용(분리자(regex)사이는 인식x)
public void w10() {
String data = "m001#kim##vip#3000#seoul#01011112222#";
StringTokenizer st = new StringTokenizer(data, "#");
System.out.println(st.countTokens()); // 토큰의 갯수 세기
while (st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
System.out.println("exit");
}
-------------------------Console----------------------------
6
m001
kim
vip
3000
seoul
01011112222
exit
'자바(java)' 카테고리의 다른 글
인터페이스(Interface) (0) | 2023.03.09 |
---|---|
Final(변수, 메서드, 클래스) (0) | 2023.03.09 |
상속 (Inheritance) (0) | 2023.03.09 |
스태틱(클래스)변수와 인스턴스변수 (0) | 2023.03.06 |
배열 (Array) (0) | 2023.03.06 |