JAVA

String

잔망루피 2021. 7. 6. 14:31

String 클래스는 char배열에 메서드를 추가한 것이다.

한 번 생성된 String인스턴스가 갖고 있는 문자열은 읽어 올 수만 있고, 변경할 수는 없다.

'+'를 사용해서 문자열을 결합하는 것은 매 연산 시 마다 새로운 문자열을 가진 String인스턴스가 생성된다.

문자열간의 결합이나 추출 등 문자열을 다루는 작업이 많이 필요한 경우에는 StringBuffer클래스를 사용하는 것이 좋다.

StringBuffer인스턴스에 저장된 문자열은 변경이 가능함.

 

💜 문자열 생성

1. 문자열 리터럴 지정

String str="abc";

2. String클래스의 생성자를 사용

String str=new String("abc");

3. 빈 문자열로 초기화

String s="";

 

 

생성자 설명 예제 결과
String(String s) 문자열s를 갖는 String인스턴스 생성 String s=new String("hello"); s="hello"
String(StringBuffer buf) StringBuffer인스턴스가 갖고 있는 문자열과 같은 내용의 String인스턴스 생성 StringBuffer sb=new StringBuffer("hello");
String s=new String(sb);
s="hello"

 

찾기 메서드 설명 예제 결과
int length() 문자열의 길이를 알려줌 String s="Hello";
int length=s.length();
length=5
char charAt(int index) 지정된 위치(index)에 있는 문자를 알려줌 String s="hello";
char c=s.charAt(1);
c='e'
String substring(int begin)
String substring(int begin, int end)
시작위치(begin)부터 끝 위치(end) 범위에 포함된 문자열을 얻음.
끝 위치의 문자는 포함되지 않음
String s="java.lang.Object";
String c=s.substring(10);
c="Object"
boolean contains(CharSequence s) s가 포함되었는지 검사 String s="abcdef";
boolean b=s.contains("bc");
b=true
boolean startsWith(String prefix) 주어진 문자열(prefix)로 시작하는지 검사 String s="java.lang.Object";
boolean b=s.startsWith("java");
b=true
boolean endsWith(String suffix) suffix로 끝나는지 검사 String file="hello.txt";
boolean b=file.endsWith("txt");
b=true
int indexOf(int ch) 문자 ch가 문자열에 존재하는지 확인하여 위치 알려줌
못 찾으면 -1 반환
String s="hello";
int idx=s.indexOf('o');
idx=4
int indexOf(int ch, int pos) 문자 ch가 문자열에 존재하는지 지정된 위치(pos)부터 확인하여 위치를 알려줌
못 찾으면 -1 반환
String s="hello";
int idx=s.indexOf('e', 0);
idx=1
int indexOf(String str) 문자열이 존재하는지 확인하여 그 위치를 알려줌
없으면 -1 반환
String s="ABCDE";
int idx=s.indexOf("CD");
idx=2
int lastIndexOf(int ch) 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치를 알려줌.
못 찾으면 -1 반환
String s="java.lang.Object";
int idx1=s.latIndexOf('.');
idx1=9
int lastIndexOf(String str) 문자열을 인스턴스의 문자열 끝에서 부터 찾아서 위치를 알려줌.
못 찾으면 -1 반환
String s="java.lang.java";
int idx1=s.lastIndexOf("java");
idx1=10
String toString() String인스턴스에 저장되어 있는 문자열을 반환 String s="Hello";
String s1=s.toString();
s1="Hello"

 

비교 메서드 설명 예제 결과
boolean equals(Object obj) obj과 String인스턴스의 문자열 비교
obj가 String이 아니거나 문자열이 다르면 false 반환
String s="hello";
boolean b=s.equals("hello");
b=true
boolean equalsIgnoreCase(String str) 문자열과 String인스턴스의 문자열을 대소문자 구분없이 비교 String s="hello";
boolean b=s.equalsIgnoreCase("Hello");
b=true
int compareTo(String str) str과 사전순서로 비교
같으면 0, 사전순으로 이전이면 음수, 이후면 양수 반환
int i="aaa".compareTo("aaa"); i=0

 

추가 메서드  설명 예제 결과
String concat(String str) str을 뒤에 덧붙인다. String s="hello";
String s2=s.concat(" world");
s2="hello world"

 

변환 메서드 설명 예제 결과
String replace(char old, char nw) 문자(old)를 새로운 문자(nw)로 바꾼 문자열 반환 String s="hello";
String s1=s.replace('h', 'c');
s1="cello"
String replace(CharSequence old, CharSequence nw) 문자열(old)을 새로운 문자열(nw)로 모두 바꾼 문자열 반환 String s="Hellollo";
String s1=s1.replace("ll", "LL");
s1="HeLLoLLo"
String replaceAll(String regex, String replacement) 지정된 문자열(regex)과 일치하는 것을 새로운 문자열(replacement)로 모두 변경 String ab="AABBAABB";
String r=ab.replaceAll("BB", "bb");
r="AAbbAAbb"
String replaceFirst(String regex, String replacement) 지정된 문자열(regex)과 일치 하는 것 중, 첫 번째 것만 새로운 문자열(replacement)로 변경 String ab="AABBAABB";
String r=ab.replaceFirst("BB", "bb");
r="AAbbAABB"
String[] split(String regex) 문자열을 지정된 분리자(regex)로 나누어 문자열 배열에 담아 반환 String animals="dog, cat, bear";
String[] arr=animals.split(",");
arr[0]="dog"
arr[1]="cat"
arr[2]="bear"
String toLowerCase() String인스턴스에 저장된 모든 문자열을 소문자로 변환하여 반환 String s="Hello";
String s1=s.toLowerCase();
s1="hello"
String toUpperCase() String인스턴스에 저장된 모든 문자열을 대문자로 변환하여 반환 String s="Hello";
String s1=s.toUpperCase();
s1="HELLO"
char[] toCharArray() 문자열을 문자배열(char[])로 변환 후 반환 String s="hello";
char[] tmp=s.toCharArray();
tmp={'h', 'e', 'l', 'l', 'o'}

 

🍟 문자열에서 문자의 빈도수 세기

long cnt=문자열.chars()
.filter(c -> c == 문자)
.count();

IntStream chars()는 이 sequence에서 char 값의 IntStream을 반환

Stream<T> filter(Predicate<? super T> predicate)는 새로운 stream을 반환

filter 메소드는 중간 연산자다.

long count()는 stream에서 요소의 갯수를 세서 반환

 

 

 

참고 👉자바의 정석 3판

 

https://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html#chars--

 

CharSequence (Java Platform SE 8 )

A CharSequence is a readable sequence of char values. This interface provides uniform, read-only access to many different kinds of char sequences. A char value represents a character in the Basic Multilingual Plane (BMP) or a surrogate. Refer to Unicode Ch

docs.oracle.com

 

https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#count--

 

Stream (Java Platform SE 8 )

A sequence of elements supporting sequential and parallel aggregate operations. The following example illustrates an aggregate operation using Stream and IntStream: int sum = widgets.stream() .filter(w -> w.getColor() == RED) .mapToInt(w -> w.getWeight())

docs.oracle.com

 

반응형

'JAVA' 카테고리의 다른 글

Comparator와 Comparable  (0) 2021.07.08
Stack  (0) 2021.07.08
wrapper 클래스  (0) 2021.07.05
버퍼 입출력  (0) 2021.07.05
HashMap  (0) 2021.07.02