문자열?
- 변수 선언 방법 : 변수 앞에 String 자료형을 붙여 선언
String a = "Geun's formula";
String a = new String("Geun's formula"); >> new 키워드는 객체를 만들 때 사용
- 원시 자료형(char, boolean, int ...)은 원래 new 키워드로 값을 생성할 수없음, String은 원시자료형에 포함되지 않아 new 키워드 사용 가능
- Wrapper 클래스 : 각각의 원시자료형을 대신하여 쓸 수 있는 자료형. 객체지향 프로그래밍의 모든 기능을 활용할 수있게 해준다.
원시 자료형 | Wrapper 클래스 |
int | Integer |
long | Long |
double | Double |
float | Float |
boolean | Boolean |
char | Char |
문자열에서 쓰이는 메서드
아래와 같이 문자열 a, b, c를 선언했을 때 기준으로 설명
String a = "Hello";
String b = "Hello java";
String c = new String("Hello");
- a.equals(c) : a가 b와 같은지 확인 (True or False 출력)
※ a == c : False 출력됨 (why? new String으로 선언하여 값은 동일하나 a와 b는 다른 객체로 선언)
- b.indexOf("java") : b에 java라는 문자열이 시작되는 위치값을 출력 (6 나옴)
- b.contains("java") : b에 java라는 문자열이 포함되어있는지 확인 (True)
- b.charAt(6) : 6번 위치의 문자를 리턴 (j 값 나옴)
- b.replaceAll("java", "Geun") : b의 java를 Geun으로 변경 (Hello Geun)
- b.substring(0, 3) : 0번부터 3번위치까지의 문자만 추출(Hell)
- b.toUpperCase() : 모두 대문자로 출력할때 사용
- b.split("#") : 문자열의 각 문자를 #으로 나누어 문자열 배열로 만듦
문자열 포매팅
예시 )
System.out.println(String.format("Error is %d%%", 99));
결과값>>Error is 99%
.format() 형식에 ( % + 문자형) 넣기.
System.out.println(String.format(" I ate %d apples.", 3));
System.out.println(String.format(" I ate %s apples.", "five"));
int number = 3;
System.out.println(String.format(" I ate %d apples.", number)); // 변수도 대입 가능
String day = "ten";
System.out.println(String.format(" I ate %d apples. So I was sick for %s days.", number, number));
// System.out.println(String.format(" Error is %d%.", 98)); // 에러
System.out.println(String.format(" Error is %d%%.", 98)); // %를 출력할때엔 %%로 입력
System.out.println(String.format(" %5s", "hi."));
System.out.println(String.format(" %-5sjane,", "hi."));
System.out.println(String.format(" %.4f", 3.4231564));
System.out.println(String.format(" %10.4f", 3.4231564)); // 전체길이 10, 소수점 넷째자리까지 오른쪽정렬
System.out.println(String.format(" %-10.4f", 3.4231564)); // 전체길이 10, 소수점 넷째자리까지 왼쪽정렬
System.out.printf(" %.4f", 3.4231564); // printf 쓰면 String.format 생략 가능!
System.out.println();
System.out.println();
종류 | 설명 |
%s | 문자열 |
%c | 문자 1개 |
%d | 정수 |
%f | 부동소수 |
%o | 8진수 |
%x | 10진수 |
%% | 특수문자 % |
StringBuffer
주로 문자열을 추가하거나 변경할 때 용이하게 하기 위해 사용하는 자료형!
String 자료형일 때에는 추가할 때마다 새로운 String 객체를 생성하여 비효율적임.
또한 String자료형은 한 번 값이 생성되면 변경이 불가한데, StringBuffer는 자유롭게 값을 변경할 수있다.
추가 후에는 다시 String 문자형으로 돌리기 위해 .toString() 메서드 사용!
- .append(" ~~~") : 값 추가
- .insert(1, "~~~") : 1번째 위치에 새로운 문자열 값 추가
- .substring(0, 4) : 0부터 4번 위치까지 문자열 추출
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("jump to java.");
System.out.println(sb);
String result1 = sb.toString(); // toString() : String 자료형으로 변환
System.out.println(result1); // StringBuffer는 객체 1번만 생성
String result2 = "";
result2 += "hello";
result2 += " jump";
result2 += " to java."; // String은 객체 4번 생성
System.out.println(result2);
StringBuffer sb2 = new StringBuffer();
sb2.insert(0, "Hi "); // insert : 특정 위치에 원하는 문자열 삽입 가능
System.out.println(sb2);
System.out.println(sb.substring(0, 4)); // .substring : 추출
System.out.println(sb2);