본문 바로가기
프로그래밍/JAVA

자바의 정석 기초 ( String 클래스 / 문자열 비교 / 문자열 리터럴 / 빈문자열 / String 클래스 생성자와 메서드)

by ✲ 2020. 7. 30.
반응형

남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다. 

String 클래스 

(문자열을 다루기 위한 클래스)

- String 클래스  = 데이터 char[] + 메서드 (문자열 관련) 

- 내용을 변경할 수 없는 불변(immutable)클래스 

- 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐, 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용

 

문자열의 비교

String str = "abc"와 String str = new String("abc"); 의 비교 

String String str1 = "abc"; // 문자열 리터럴 "abc"의 주소가 str1에 저장
String str2 = "abc"; // 문자열 리터럴 "abc"의 주소가 str2에 저장 
String str3 = new String("abc"); // 새로운 String인스턴스를 생성
String str4 = new String("abc"); // 새로운 String인스터스를 생성

== 주소비교 

equals 내용비교 

> 따라서 문자열 비교는 equals() 사용 

 

문자열 리터럴

- 문자열 리터럴은 프로그램 실행시 자동으로 생성된다. (constant pool에 저장) 

- 같은 내용의 문자열 리터럴은 하나만 만들어진다. 

 

빈 문자열("", empty string)

- 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열

String str = ""; // str을 빈 문자열로 초기화 

- 크기가 0 인 배열을 생성하는 것은 어느타입이나 가능

char[] chArr = new char[0]; //길이가 0인 char 배열

int[] iArr = {};     //길이가 0인 int 배열

- 문자(char)와 문자열(String)의 초기화

String s = "";      // 빈 문자열로 초기화

char c = '';         // 공백으로 초기화 

 

String 클래스의 생성자와 메서드 

메서드 / 설명 예제 결과
String(String s) 
주어진 문자열s를 갖는 String인스턴스를 생성
String s = new String("Hello"); s= "Hello"
String(char[] value)
주어진 문자열(value)을 갖는 String인스턴스를 생성
char[] 를 String으로 바꿀때 사용 
String을 char[]로 바꿀때는 toCharArray()
char[] c = {'H','e','l','l','o'}
String s = new String(c);
s = "Hello
String(StringBuffer buf)
StringBuffer 인스턴스가 갖고 있는 문자열과 
같은 내용의 String인스턴스를 생성
StringBuffer sb = new StringBuffer("Hello");
String s = new String(sb);
s = "Hello
char charAt(int index)
지정된 위치(index)에 있는 문자를 알려준다. 
(index 는 0부터 시작)
String s = "Hello";
String n = "0123456";
char c = s.charAt(1);
char c2 = n.charAt(1);
c = 'e'
c2 = '1'
int compareTo(String str)
문자열(str)과 사전순서로 비교한다.
같으면 0을 사전순으로
이전이면 음수를 이후면 양수를 반환
int i = "aaa".compareTo("aaa");
int i2 = "aaa".compareTo("bbb");
int i3  = "bbb".compareTo("aaa");
i=0     같으면 0 
i2= -1   
왼쪽(aaa) 작으면 -1 
i3 = 1       
오른쪽 작으면 양수 
String concat(String str)
문자열(str)을 뒤에 덧붙인다.
String s = "Hello"
String s2 = s.concat(" World");
s2= "Hello World"
boolean containes(CharSequence s)
지정된 문자열(s)이 포함되었는지 검사한다.
String s = "abcdefg";
boolean b = s.contains("bc");
b= true
boolean endWith(String suffix)
지정된 문자열(suffix)로 끝나는지 검사한다.
String file = "Hello.txt"
boolean b = file.endsWith("txt")
b= true
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
boolean equalsIgnoreCase(String str) 
문자열 String인스턴스의 문자열을 대소문자
구분없이 비교
String s = "Hello"
boolean b = s.equalsIsIgnoreCase("HELLO");
boolean b2 = s.equalsIgnoreCase("heLLo");
b = true
b2 = true
int indexOf(int ch)
주어진 문자(ch)가 문자열에 존재하는지 확인하여
위치(index)를 알려준다. 못 찾으면 -1을 반환 
(index는 0부터 시작)
String s = "Hello";
int idx1 = s.indexOf('o');
int idx2 = s.indexOf('k');
idx1= 4
idx2 = -1
int indexOf(int ch, int pos) pos 검색시작위치
주어진 문자(ch)가 문자열에 존재하는지 지정된
위치(pos)부터 확인하여 위치(index)를 알려준다.  
못 찾으면 -1을 반환한다 (index는 0부터시작)
String s = "Hello";
int inx1 = s.indexOf('e',0);
int idx2 = s.indexOf('e',2);
idx1 =  1
idx2 = -1 
int idexOf(String str)
주어진 문자열이 존재하는지 확인하여 그 위치(index)를 알려준다. 없으면 -1을 반환한다.
(index는 0부터 시작)
String s = "ABCDEFG"; 
int idx = s.indexOf("CD");
idx=2
int lastIndexOf(int ch)
지정된 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치(index)를 알려준다.
못 찾으면 -1을 반환한다.
String s  = "java.lang.Object";
int idx1 = s.lastindexOf('.');
int idx2 = s.indexOf('.');
idx1 = 9
idx2 = 4 
int lastIndexOf(String str)
지정된 문자열을 인스턴스의 문자열 끝에서부터 
찾아서 위치(index)를 알려준다. 
못 찾으면 -1을 반환한다. 
String s = "java.lang.java";
int idx1 = s.lastIndexOf("java");
int idx2 = s.indexOf("java");
idx1 = 10
idx2 = 0
int length()
문자열의 길이를 알려준다.
String s = "Hello";
int length = s.length();
length =5 
String[] split (String regex)
문자열을 지정된 분리자(regex)로 나누어 문자열 
배열에 담아 반환한다.
String animals = "dog,cat,bear";
String[] arr = animals.split(",");
arr[0] = "dog"
arr[1] = "cat"
arr[2] = "bear"
String[] split(String regex, int limit)
문자열을 지정된 분리자(regex)로 나누어 문자열 
배열에 담아 반환한다. 단, 문자열 전체를 지정된 수 
(limit)로 자른다. 
String animals = "dog,cat,bear";
String[] arr = animals.split(",",2);
arr[0] = "dog"
arr[1] = "cat,bear"
boolean startsWith(String prefix)
주어진 문자열(prefix)로 시작하는지 검사한다. 
String s = "java.lang.Object";
boolean b = s.startWith("java");
boolean b2 = s.startWith("lang");
b = true
b2 = false
String substring(int begin)
String substring(int begin, int end)
주어진 시작위치(begin)부터 끝 위치(end)범위에 
포함된 문자열을 얻는다. 이 때, 시작위치의 문자는 
범위에 포함되지만, 끝 위치의 문자는 포함되지 않는다.  (begin <= x < end) 
String s = "java.lang.Object";
String c = s.subString(10);
String p = s.subString(5,9);
c="Object"
p = "lang"
반응형

댓글