IT/Java
String 클래스
딩딩예
2019. 7. 16. 17:37
String 클래스
1. String 생성자
- byte[]배열을 문자열로 변환하는 생성자
파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte[] 배열이므로 이것을 문자열로 변환하기 위해 사용
//배열 전체를 String 객체로 생성
String str = new String(byte[] bytes);
//지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, String charseName);
//배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성
String str = new String(byte[] bytes, int offset, int length);
//지정한 문자셋으로 디코딩
String str = new String(byte[] bytes, int offset, int length, String charsetName);
- 키보드로부터 읽은 바이트 배열을 문자열로 변환
byte[] bytes = new byte[100];
//읽은 바이트를 저장하기 위한 배열 생성
int readByteNo = System.in.read(bytes);
//배열에 읽은 바이트를 저장하고 읽은 바이트 순을 리턴
String str = new String(bytes, 0, readByteNo-2); //배열을 문자열로 변환
/*2빼준 이유 :[엔터키]캐리지리턴(\r)+라인피드(\n)부분은 문자열로 만들필요 없음*/
2. String 메소드
- String은 문자열의 추출, 비교, 찾기, 분리, 변환등과 같은 다양한 메소드가 있음
- 사용 빈도가 높은 메소드
리턴타입 | 메소드명(매개 변수) | 설명 |
---|---|---|
char | charAt(int index) | 특정 위치의 문자 리턴 |
boolean | equals(Object anObject) | 두 문자열을 비교 |
byte[] | getBytes() | Byte로 리턴 |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte[]로 리턴 |
int | indexOf(String str) | 문자열 내에서 주어진 문자열의 위치를 리턴 |
int | length() | 총 문자의 수를 리턴 |
String | replace(CharSequence target, CharSequence replacement) | target 부분을 replacement로 대치한 새로운 문자열을 리턴 |
String | subString(int beginIndex) | beginIndex 위치에서 끝까지 잘라낸 새로운 문자열을 리턴 |
String | subString(int beginIndex, int endIndex) | beginIndex 위치에서 endIndex 전까지 잘라낸 새로운 문자열을 리턴 |
String | toLowerCase() | 알파벳 소문자로 변환한 새로운 문자열을을 리턴 |
String | toUpperCase() | 알파벳 대문자로 변환한 새로운 문자열을을 리턴 |
String | trim() | 앞뒤 공백을 제거한 새로운 문자열을 리턴 |
String | valueOf(int i) / valueOf(double d) | 기본 타입값을 문자열로 리턴 |
- 문자 추출(charAt())
String subject = "자바 프로그래밍";
char charValue = subject.charAt(3); //인덱스 0부터시작 '프'
- 문자열 비교(equals())
String strVar1 = new String("연필");
String strVar2 = "연필";
String strVar3 = "연필";
// 자바는 문자열 리터럴이 동일하다면 동일한 String 객체를 참조하도록 되어있다.
/*번지 비교 */
strVar1 == strVar2 //false
strVar2 == strVar3 // true
/*객체 문자열만 비교*/
strVar1.equals(strVar2) //true
strVar2.equals(strVar3) //true
- 바이트 배열로 변환(getBytes())
시스템의 기본 문자셋으로 인코딩된 바이트 배열 얻기
byte[]bytes = "문자열".getBytes();
특정 문자셋으로 인코딩된 바이트 배열 얻기
try {
byte[] bytes = "문자열".getBytes("EUC-KR");
byte[] bytes = "문자열".getBytes("UTF-8");
} catch(UnsupportedEncodingException e) {
}
시스템 기본 문자셋과 다른 문자셋으로 인코딩된 바이트 배열일 경우 디코딩은 이렇게 해야한다.
String str = new String(byte[] bytes, String charseName);
-
문자열 찾기(indexOf())
- 매개값으로 주어진 문자열이 시작되는 인덱스를 리턴한다.
- 주어진 문자열이 포함되어 있지 않으면 -1을 리턴한다.
String subject = "자바 프로그래밍"; int subject.indexOf("프로그래밍"); // 3을 리턴
- 특정 문자열이 포함되어 있는지 여부에 따라 실행코드를 달리할 때 자주 사용된다.
if( 문자열.indexOf("찾는문자열") != -1 ) { //포함되어 있는 경우 } else { //포함되어 있지 않은 경우 }
-
문자열 길이(length())
String subject = "자바 프로그래밍"; int length = subject.length(); //--> 8
-
문자열 대치(replace())
- 첫번째 매개값인 문자열을 찾아 두번째 매개값인 문자열로 대치한 새로운 문자열을 리턴
String oldStr = "자바 프로그래밍"; String newStr = oldStr.replace("자바", "JAVA");
- String 객체의 문자열은 변경이 불가한 특성을 갖기 때문에 replace() 메소드가 리턴하는 문자열은 원래 문자열의 수정본이 아니라 완전히 새로운 문자열!
- 문자열 잘라내기(substring())
-
subString(int beginIndex, int endIndex)
- 주어진 시작과 끝 인덱스 사이의 문자열을 추출
-
subString(int beginIndex)
- 주어진 인덱스 이후부터 끝까지 문자열을 추출
```java
String ssn ="001124-3456789";
String firstNum = ssn.subString(0,6);
//001124 ->0(포함)~6(제외)
String secondNum = ssn.subString(7);
//3456789 ->인덱스 7부터 문자열 추출
```
-
알파벳 소 대문자 변경(toLowerCase(), toUpperCase())
-
toLowerCase() : 문자열을 모두 소문자로 바꾼 새로운 문자열 생성한 후 리턴
-
toUpperCase() : 문자열을 모두 대문자로 바꾼 새로운 문자열을 생성한 후 리턴
String original = "Java Programming"; String lowerCase = original.toLowerCase(); String upperCase = original.toUpperCase();
- equalsIgnoreCase() : equals()는 대소문자를 맞추어야하지만 이 메소드는 그 과정 생략가능.
String str1 = "java"; String str2 = "JAVA"; System.out.println(str1.equals(str2)); //false System.out.println(str.equalsIgnoreCase(str2)); //true
-
-
문자열 앞뒤 공백 잘라내기(trim())
String oldStr = " 자바 프로그래밍 "; String newStr = oldStr.trim(); //자바 프로그래밍
-
문자열 변환(valueOf())
기본 타입의 값을 문자열로 변환
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(double d)
static String valueOf(float f)