-
[Java] 자바 기본 API - String ClassCSE/Java 2016. 3. 29. 13:47
자바 기본 API는 여러 절로 구성되어 있습니다.
StringTokenizer, StringBuffer, StringBuilder Class
Regular Expression & Pattern Class
String Class
String 생성자
자바의 문자열은 java.lang 패키지의 String 클래스의 인스턴스로 관리됩니다. 소스상에서 문자열 리터럴은 String 객체로 자동 생성되지만, String 클래스의 다양한 생성자를 이용해서 직접 String 객체를 생성할 수도 있습니다.
다음은 빈도수가 높은 String 생성자들입니다. 파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte[] 배열이므로 이것을 문자열로 변환하기 위해 사용됩니다.
123456789// 배열 전체를 String 객체로 생성String str = new String(byte[] bytes);// 배열을 지정한 문자셋으로 디코딩String str = new String(byte[] bytes, String charsetName);// 배열의 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);cs 다음은 바이트 배열을 문자열로 변환하는 예제입니다.
* ByteToStringExam.java
1234567891011121314151617package api;public class ByteToStringExam {public static void main(String[] args) {byte[] bytes = { 72, 101, 108, 108, 111, 32, 74, 97, 118, 97 };String str1 = new String(bytes);System.out.println(str1);String str2 = new String(bytes, 6, 4);System.out.println(str2);}}cs 다음 예제는 키보드로부터 읽은 바이트 배열을 문자열로 변환하는 방법을 보여줍니다. System.in.read() 메소드는 키보드에서 입력한 내용을 파라미터로 주어진 바이트 배열에 저장하고 읽은 바이트 수를 리턴합니다.
* KeyboardToStringExam.java
123456789101112131415161718192021package api;import java.io.IOException;public class KeyboardToStringExam {public static void main(String[] args) throws IOException {byte[] bytes = new byte[100];System.out.print("입력: ");int readByteNo = System.in.read(bytes);String str = new String(bytes, 0, readByteNo - 1);System.out.println(str);}}cs String 메소드
String은 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메소드를 가지고 있습니다. 그 중에서 사용 빈도수가 높은 메소드를 다음과 같이 정리해 봤습니다.
문자 추출(charAt())
charAt() 메소드는 파라미터로 주어진 인덱스의 문자를 리턴합니다. 여기서 인덱스란 0부터 "문자열 길이 - 1" 까지의 번호를 말합니다. 다음 코드를 보면서 이해해 봅시다.
12String subject = "자바머신";char charValue = subject.charAt(3);cs charAt(3)은 3인덱스 위치에 있는 문자를 말합니다. 위에서는 결국 charValue 변수에 '신' 문자가 들어가게 됩니다.
다음 예제는 주민등록번호에서 인덱스 7번 문자를 읽어 남자와 여자를 구분하는 예제입니다.
* StringCharAtExam.java
12345678910111213141516171819202122232425package api;public class StringCharAtExam {public static void main(String[] args) {String ssn = "160329-3232121";char sex = ssn.charAt(7);switch (sex) {case '1':case '3':System.out.println("남자입니다.");break;case '2':case '4':System.out.println("여자입니다.");break;}}}cs 문자열 비교(equals())
기본 타입(byte, char, short, int, long, float, double, boolean) 변수의 값을 비교할 때에는 == 연산자를 사용합니다. 그러나 문자열을 비교할 때는 == 연산자를 사용하면 다른 결과를 초래할 수도 있습니다. 아래 예제를 보면서 이해해 봅시다.
* StringEqualsExam.java
1234567891011121314151617181920212223242526package api;public class StringEqualsExam {public static void main(String[] args) {String strVar1 = new String("Jolie");String strVar2 = "Jolie";if (strVar1 == strVar2) {System.out.println("같은 String 객체를 참조");} else {System.out.println("다른 String 객체를 참조");}if (strVar1.equals(strVar2)) {System.out.println("같은 문자열을 가짐");} else {System.out.println("다른 문자열을 가짐");}}}cs 위에서 보는 것과 같이 == 연산자와 equals의 차이가 다르다는 것을 알 수 있습니다.
문자열 찾기(indexOf())
indexOf() 메소드는 파라미터로 주어진 문자열이 시작되는 인덱스를 리턴합니다. 만약 주어진 문자열이 포함되어 있지 않으면 -1을 리턴합니다. 다음 코드를 보면서 이해해봅시다.
12String subject = "자바 프로그래밍";int index = subject.indexOf("프로그래밍");cs index 변수에는 3이 저장되는데, "자바 프로그래밍"에서 "프로그래밍" 문자열의 인덱스 위치가 3이기 때문입니다. indexOf() 메소드는 if문의 조건식에서 특정 문자열이 포함되어 있는지 여부에 따라 실행 코드를 달리할 때 자주 사용됩니다.
* StringIndexOfExam.java
12345678910111213141516171819202122package api;public class StringIndexOfExam {public static void main(String[] args) {String subject = "Palpit's Tistory blog";int loc = subject.indexOf("blog");System.out.println(loc);if (subject.indexOf("blog") != -1) {System.out.println("블로그");} else {System.out.println("Nothing");}}}cs 문자열 길이(length())
length() 메소드는 문자열의 길이(문자의 수)를 리턴합니다.
1234String subject = "Palpit";int length = subject.length();// length is 6;cs length 변수에는 6이 저장됩니다.
문자열 대치(replace())
replace() 메소드는 첫 번째 파라미터인 문자열을 찾아 두 번째 파라미터로 대치한 새로운 문자열을 생성하고 리턴합니다.
123String str = "자바 프로그래밍";String newStr = str.replace("자바","JAVA");cs String 객체의 문자열은 변경이 불가한 특성을 갖기 때문에 replace() 메소드가 리턴하는 문자열은 원래 문자열의 수정본이 아니라 새로운 문자열입니다. 따라서 newStr변수는 새로운 문자열을 참조하게 되는 것입니다.
문자열 잘라내기(substring())
substring() 메소드는 주어진 인덱스에서 문자열을 추출합니다. substring() 메소드는 파라미터의 수에 따라 두 가지 형태로 사용됩니다. substring(int beginIndex, int endIndex)는 주어진 시작과 끝 인덱스 사이의 문자열을 추출하고, substring(int beginIndex)는 주어진 인덱스 이후부터 끝까지 문자열을 추출합니다.
123String ssn = "160329-3123123";String birth = ssn.substring(0, 6); // 160329String identity = ssn.substring(7); // 3123123cs 문자열 앞뒤 공백 잘라내기(trim())
trim() 메소드는 문자열의 앞뒤 공백을 제거한 새로운 문자열을 생성하고 리턴합니다. 다음 코드를 보면 newStr 변수는 새로 생성된 "Palpit's blog" 문자열을 참조합니다. trim() 메소드는 앞뒤의 공백만 제거할 뿐 중간의 공백은 제거하지 않습니다.
12String str = " Palpit's blog ";String newStr = str.trim();cs 문자열 변환(valueOf())
valueOf() 메소드는 기본 타입의 값을 문자열로 변환하는 기능을 가지고 있습니다. String 클래스에는 매개 변수의 타입별로 valueOf() 메소드가 오버로딩 되어 있습니다.
* StringValueOfExam.java
12345678910111213141516171819package api;public class StringValueOfExam {public static void main(String[] args) {String str1 = String.valueOf(100);String str2 = String.valueOf(55.7);String str3 = String.valueOf(true);System.out.println("str1: " + str1);System.out.println("str2: " + str2);System.out.println("str3: " + str3);}}cs end* 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.'CSE > Java' 카테고리의 다른 글
[Java] 자바 기본 API - Arrays Class (1) 2016.04.16 [Java] 자바 기본 API - 정규 표현식과 Pattern Class (0) 2016.04.16 [Java] 자바 기본 API - StringTokenizer, StringBuffer, StringBuilder Class (0) 2016.03.29 [Java] 자바 기본 API - Class Class (0) 2016.03.28 [Java] 자바 기본 API - System Class (0) 2016.03.28 [Java] 자바 기본 API - Objects Class (0) 2016.01.14