String 클래스의 생성자와 메서드(1/5)
메서드 & 설명 | 예제 | 결과 | |
1 | String(String s) 주어진 문자열을 갖는 String인스턴스(객체)를 생성한다. (자주사용 x) |
String s = new String("Hello"); | s = "hello" |
2 | String(char[ ] value) 주어진 문자열(value)을 갖는 String인스턴스(객체)를 생성한다. char[ ] → String 변경 반대로는, toCharArray를 사용 char[] ← String |
char[] c={'H', 'e', 'l', 'l', 'o'}; String s = new String(c); |
s = "Hello" |
3 | String(StringBuffer buf) StringBuffer인스턴스(객체)가 갖고 있는 문자열과 같은 내용의 String인스턴스(객체)를 생성한다. StringBuffer → String 변경 반대시, StringBuffer생성자 사용 |
StringBuffer sb = new StringBuffer("Hello"); String s = new String(sb); |
s = "Hello" |
4 | char charAt(int index) index 위치에 있는 문자를 알려준다. (index는 0부터 시작) |
String s = "Hello"; char c = s.charAt(1); ![]() String n = "0123456"; char c2 = n.charAt(1); |
c = 'e' c2 = '1' |
5 | int compareTo(String str) 문자열(str)과 사전순서로 비교한다. 같으면 0을 사전순으로 이전이면 음수를, 이후면 양수를 반환한다. |
int i = "aaa".compareTo("aaa"); int i2 = "aaa".compareTo("bbb"); int i3 = "bbb".compareTo("aaa"); |
i = 0 (같으면) i2 = -1 (왼쪽이 작으면) i3 = 1 (오른쪽이 작으면) |
String 클래스의 생성자와 메서드(2/5)
메서드 & 설명 | 예제 | 결과 | |
1 | String concat(String str) 문자열(str)을 뒤에 이어 붙인다. |
String s = "Hello" Strings2 = s.concat(" World") |
s2 = "Hello World" |
2 | boolean contains(CharSequence s) 지정된 문자열(s)이 포함되었는지 검사한다. ※ CharSequence : 인터페이스 장점활용 서로 관계없는 클래스들의 관계를 맺어. All known implementing classes들이 CharSequence 를 구현하여, 공통점이생김 그래서 다형성으로 구현한클래스들이 매개변수로 들어올수있음 ![]() |
String s = "abcdefg"; boolean b = s.contains("bc"); |
b = true |
3 | boolean equals(Object obj) 매개변수로 받은 문자열(obj)와 String 인스턴스(객체)의 문자열을 비교한다. obj가 String이 아니거나 문자열이 다르면 false반환한다. |
String s = "Hello"; boolean b = s.equals("Hello); boolean b2 = s.equals("hello); |
b = true b2 = false |
4 | boolean equalsIgnoreCase(String str) 문자열과 String인스턴스(객체)의 문자열을 대소문자 구분없이 비교한다. |
String s = "Hello"; boolean b = s.equalsIgnoreCase("HELLO); boolean b2 = s.equalsIgnoreCase("heLLo); |
b = true b2 = true |
5 | int length() 문자열의 길이를 알려준다. |
String s = "Hello"; int length = s.length(); |
length = 5 |
String 클래스의 생성자와 메서드(3/5)
메서드 & 설명 | 예제 | 결과 | |
1 | int indexOf(int ch) 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려준다. 못찾으면 -1을 반환한다. (index는 0부터 시작) |
String s = "Hello"; int idx1 = s.indexOf('o'); int idx2 = s.indexOf('k'); ![]() |
idx1 = 4 idx1 = -1 |
2 | int indexOf(int ch, int pos) 주어진 문자(ch)가 문자열에 존재하는지 지정된위치(pos)부터 확인하여 위치(index)를 알려준다. 못찾으면 -1을 반환한다. (index는 0부터 시작) |
String s = "Hello"; int idx1 = s.indexOf('e', 0); int idx2 = s.indexOf('e', 2); ![]() |
idex1 = 1 idex2 = -1 |
3 | int indexOf(String str) 주어진 문자열이 존재하는지를 확인하여 그 위치(inxex)를 알려준다. 못찾으면 -1을 반환한다. (index는 0부터 시작) |
String s = "ABCDEFG"; int idx = s.indexOf("CD"); ![]() |
idx = 2 |
4 | int lastIndexOf(int ch) 지정된 문자 또는 문자코드를 문자열의 오른쪽끝에서부터 찾아서 위치(index)를 알려준다. 못찾으면 -1을 반환한다. |
String s = "java.lang.Object"; int idx1 = s.lastIndexOf('.'); int idx2 = s.IndexOf('.'); ![]() |
idx1 = 9 idx2 = 4 |
5 | int lastInxdexOf(String str) 지정된 문자열을 인스턴스(객체)의 문자열 끝에서부터 찾아서 위치(index)를 알려준다. 못찾으면 -1을 반환한다. |
String s = "java.lang.java"; int idx1 = s.lastIndexOf("java"); int idx2 = s.indexOf("java"); ![]() |
idx1 = 10 dx = 0 |
String 클래스의 생성자와 메서드(4/5) ※ regex는 정규표현식
메서드 & 설명 | 예제 | 결과 | |
1 | String[] split(String regex) 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환한다. |
String animals = "dog, cat, bear"; String[] arr = animals.split(","); |
arr[0]="dog" arr[1]="cat" arr[2]="bear" |
2 | String[] split(string regex, int limit) 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환한다. 단, 문자열 전체를 지정된 수(limit)로 자른다 |
String animals= "dog, cat, bear, tiger, snake"; String[] arr = animals.split(",",4); ※ limit 수만큼 배열을 만들어 하나씩들어가고, 남는것들은 마지막 배열에 몰아서 들어간다. |
arr[0]= "dog" arr[1]="cat" arr[2]="bear" arr[3]="tiger, snake" |
3 | boolean startWith(String suffix) 지정된 문자열로 시작하는지 검사 반대로, boolean endWith(String suffix)이 있음 |
String s = "java.lang.Object"; boolean b = s.startsWidth("java"); boolean b2 = s.startsWidth("lang"); |
b = true b2 = false |
4 | boolean endWith(String suffix) 지정된 문자열로 끝나는지 검사 반대로, boolean startWith(String suffix)이 있음 |
String file = "Hello.txt"; boolean b = file.endWidth("txt"); |
b = true |
5 | String substring(int begin) //end없으면 끝까지로간주 String substring(int begin, int end) 주어진 시작위치(begin)부터 끝위치(end)범위에 포함된 문자열을 찾는다. 이 때 시작위치(index)의 문자는 범위에 포함되지만, 끝위치(index)의 문자는 포함되지 않는다. (begin <= x < end) 단, begin만 입력시 index 끝까지 포함됨. |
String s = "java.leng.Object"; String c= s.substring(10); String p = s.substring(5,9); ![]() |
c = "Object" p = "lang" |
String 클래스의 생성자와 메서드(5/5)
메서드 & 설명 | 예제 | 결과 | |
1 | String toLowerCase() String인스턴스(객체)에 저장되어있는 모든 문자열을 소문자로 변환하여 반환한다. |
String s = "Hello"; String s1 = s.toLower(); |
s1 = "hello" |
2 | String toUpperCase() String인스턴스(객체)에 저장되어있는 모든 문자열을 대문자로 변환하여 반환한다. |
String s = "Hello"; String s1 = s.toUpperCase(); |
s1 = "hello" |
3 | String trim() 문자열의 왼쪽 끝과 오른쪽 긑에 있는 공백을 없앤 결과를 반환한다. 이 때 문자열 중간에 있는 공백은 제거되지 않음. |
String s = " Hello World "; String s1 = s.trim(); |
s1="Hello World" |
4 | String ← 기본타입 변환 static String valueOf(boolean b) static String valueOf(char c) static String valueOf(int i) static String valueOf(long l) static String valueOf(float f) static String valueOf(double d) static String valueOf(Object o) 지정된 값을 문자열로 변환하여 반환한다. 참조변수의 경우 toString()을 호출한 결과를 반환한다. |
String b = String.valueOf(true); String c = String.valueOf('a'); String i = String.valueOf(100); String l = String.valueOf(100L); String f = String.valueOf(10f); String d = String.valueOf(10.0); java.util.Date dd = new java.util.Date(); String date = String.valueOf(dd); |
b="true" c="a" i="100" l="100" f="10.0" l="100" f="10.0" d="10.0" date = "Sat Feb 11 18:46:23 KST 2023" |
join()과 StringJoiner
메서드 & 설명 | 예제 | 결과 | |
1 | String.join(delimiter, elements) elements(요소들)에 delemiter(구분자)로 구분해 결합한다. ※ 내부적으로 StringBuffer을 사용하여 속도가빠름 |
String animals = "dog,cat,bear"; System.out.println("체크:"+animals); // 문자열을 , 구분자로 나눠서 배열에 저장 String[] arr = animals.split(","); for (int i = 0; i < arr.length; i++) { //체크 System.out.println("arr[" + i + "]"+arr[i]); } //배열의 문자열을 '-'구분해서 결합 String str= String.join("-", arr); System.out.println("최종 : "+str); ___________________________ double i = 100.0; int i2 = 200; // 숫자 >> 문자열 String str = String.valueOf(100.0); //System.out.println(str); String str2 = String.valueOf(200); //문자열 >> 숫자 double sum = Double.valueOf(str) + Integer.valueOf(str2); //join활용 ( 내부적으로 StringBuffer ) System.out.println(String.join(" ",str,"+",str2,"=")+sum); |
체크:dog,cat,bear arr[0]dog arr[1]cat arr[2]bear 최종 : dog-cat-bear ____________ 100.0 + 200 =300.0 |
문자열과 기본형 간의 변환
메서드 & 설명 | 예제 | 결과 | |
1 | 숫자 → 문자열 변환 (2가지) ① str + "" (빈문자열) [간단] ② String.valueOf(i) [속도빠름] |
int i = 100; // 1번째 String str1 = i + ""; System.out.println(str1); //2번째 String str2 = String.valueOf(i); System.out.println(str2); |
str1 = "100" str2 = "100" |
2 | 문자열 → 숫자 변환 ① integer.parseInt( 문자열 ); ② Integer.valueOf( 문자열 ); |
// 1번째 int s = Integer.parseInt("200"); // 2번째 int s2 = Integer.valueOf("200"); |
s= 100 s2 = 100 |
3 | ![]() |

StringBuffer클래스
규칙
1. String처럼 문자열 배열(char[ ])을 내부적으로 가지고 있다.
2. String과 달리 mutable 내용변경이 가능하다.
3. 배열길이 변경불가. 공간이 부족하면 새로운배열 생성필요하다.
4. StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한다.
5. append()는 StringBuffer에 추가후, StringBuffer의 참조를 반환
6. StringBuffer는 equals()가 오버라이딩 되어있지않다. ( 주소비교를 한다 this==obj)
ㄴ 그래서, toString을 활용하여 String으로 변환 후에 equals() 비교해야한다.





StringBuffer 메서드
메서드 & 설명 | 예제 | 결과 | |
1 | StringBuffer() 16문자를 담을수 있는 버퍼를 가진 StringBuffer인스턴스(객체)를 생성한다. |
StringBuffer sb = new StringBuffer(); | sb = "" (기본 16개인 배열 생성됨) |
2 | StringBuffer(length) 지정된 개수의 문자를 담을수 있는 버퍼를 가진 StringBuffer인스턴스(객체)를 생성한다. (추천 알맞게 크기 만드는것) |
StringBuffer sb = new StringBuffer(10); | sb = "" (10개인 배열이만들어짐) |
3 | StringBuffer(String str) 지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스(객체)를 생성한다. |
StringBuffer sb = new StringBuffer("Hi") | sb= "Hi" |
4 | StringBuffer append(bollean b) (char c) (char[] str) (double d) (float f) (int i) (long l) (Object obj) (String str) 매개변수로 입력된 값을 문자열로 변환하여 StringBuffer인스턴스(객체)가 저장하고 있는 문자열의 뒤에 덧붙인다. |
StringBuffer sb = new StringBuffer("abc"); StringBuffer sb2 = sb.append(true); sb.append('d).append(10.0f); StringBuffer sb3 = sb.append("ABC"); .append(123); |
sb = "abctrued10.0ABC123" sb2 = "abctrued10.0ABC123" sb3 = "abctrued10.0ABC123" |
5 | int capacity() StringBuffer인스턴스의 버퍼크기를 알려준다. length()는 버퍼에 담긴 문자열의 길이를 알려줌 |
StringBuffer sb = new StringBuffer(100); sb.append("abcd"); int bufferSize = sb.capacity(); int stringSize = sb.length(); |
bufferSize = 100 stringSize = 4 |
메서드 & 설명 | 예제 | 결과 | |
1 | char charAt(int index) 지정된 위치(index)에 있는 문자를 반환한다. |
StringBuffer sb = new StringBuffer("abc); char c= sb.charAt(2); |
c = 'c' |
2 | StringBuffer delete(int start, int end) start ~ end 사이에 문자를 제거한다. (단, 끝 위치의 문자는 제외) |
StringBuffer sb = new StringBuffer("0123456"); StringBuffer sb2 = sb.delete(3,6); |
sb = "0126" sb2 = "0126" |
3 | StringBuffer deleteCharAt(int index) 지정된 위치(index)의 문자를 제거한다. |
StringBuffer sb = new StringBuffer("0123456"); sb.deleteCharAt(3); |
sb = "012456" |
4 | void setCharAt(int index, char ch) 위치(index)의 문자를 주어진 문자(ch)로 변경 |
StringBuffer sb = new StringBuffer("0123456"); sb.setCharAt(5, 'o'); |
sb = "01234o6); |
5 | void setLength(int newLength) 지정된 길이로 문자열의 길이를 변경한다. 길이를 늘리는 경우에 나머지 빈공간을 널문자 '\u0000'로 채운다. |
StringBuffer sb = new StringBuffer("0123456"); sb.setLength(5); StringBuffer sb2 = new StringBuffer("0123456"); sb2.setLength(10); String str = sb2.toString().trim(); |
sb = "01234" sb2 = "0123456 " str = "0123456" |
메서드 & 설명 | 예제 | 결과 | |
1 | String toString() StringBuffer인스턴스(객체)의 문자열을 String으로 반환 |
StringBuffer sb = new StringBuffer("0123456"); String str = sb.toString(); |
str = "0123456" |
2 | String substring(int start) String substring(int start, int end) 범위 내의 문자열을 String으로 뽑아서 반환. 시작위치(start) 시작위치부터 문자열 끝까지 or end(마지막숫자 미포함)까지 뽑는다. |
StringBuffer sb = new StringBuffer("0123456"); String str = sb.substring(3); String str2 = sb.substring(3, 5); |
str = "3456" str2 = "34" |
3 | void setCharAt(int index, char ch) 위치(index)의 문자를 주어진 문자(ch)로 변경 |
StringBuffer sb = new StringBuffer("0123456"); sb.setCharAt(5, 'o'); |
sb = "01234o6); |
4 | StringBuffer insert(int index, String str) index위치에 문자열(str) 삽입 |
StringBuffer kk = new StringBuffer("0123456"); StringBuffer k1 = kk.insert(3, "abc"); |
k1 = "012abc3456" |
5 | StringBuffer replace(start, end, str) start(index)위치부터 end위치까지 문자열(str)을 대체한다. |
StringBuffer kk = new StringBuffer("0123456"); StringBuffer k2 = kk.replace(3, kk.length(), "END"); |
k2 = "012END" |
출처 : 남궁성의 정석코딩
https://www.youtube.com/@MasterNKS
'Java의 정석' 카테고리의 다른 글
10장. 날짜와 시간 & 형식화 ( Calendar클래스 ) (0) | 2023.02.12 |
---|---|
9장. String.lang패키지(StringBuilder,Math클래스, 래퍼클래스, 날짜) (0) | 2023.02.12 |
9장. 유용한클래스(Object클래스, equals(), hashCode(),toString(),String클래스의 문자열비교) (0) | 2023.02.11 |
8장. 예외처리( 계층구조, try-catch 등) (0) | 2023.02.09 |
7장. 객체지향프로그래밍2 (내부클래스, 익명클래스) (0) | 2023.02.08 |