String class
문자열 배열 필드와 배열을 사용하는 메소드로 구성된 클래스
주요 String class
equals | 같은지 비교하는 메소드 |
charAt(순번) | 순번에 해당하는 문자를 구하는 메소드 |
compareTo(문자열) | 두 문자열을 비교하는 메소드 |
(문자열1.compareTo.문자열2) | |
equals와 compareTo 차이점 | |
equals | true, false로 결과가 나옴. |
compareTo | 반환값이 같으면 0, 앞의 문자열이 크면 양수(큰 값을 앞에 쓰면), 뒤의 문자열이 크면 음수(큰 값을 뒤에 쓰면) |
순서상 어느 것이 먼저인지 나중인지 비교할 수 있음. | |
startWith, endsWith, indexOf | 문자열 내의 문자열 검색 메소드 |
startWith | 문자열이 특정 문자열로 시작하는지 여부 확인 |
endsWith | 문자열이 특정 문자열로 끝나는지 여부 확인 |
indexOf | 문자열에 특정 문자열이 들어있는 위치 검사 |
length | 문자열의 길이를 구하는 메소드 |
replace | 특정 위치의 문자 변경 메소드 |
substring | 문자열에서 문자열을 추출하는 메소드 |
split | 구분자를 사용하여 전체 문자열을 잘라서 부분 문자열을 만드는 메소드 |
trim | 앞뒤 공백 제거 메소드 |
charAt 예제)
public static void main(String[] args) {
String str = "Hello world";
System.out.println("6번째 문자 : " + str.charAt(5));
String order = "01100";
for(int i = 0; i < order.length(); i++) {
if(order.charAt(i) == '0') {
System.out.println("전원을 끕니다.");
}
else if(order.charAt(i) == '1') {
System.out.println("전원을 켭니다.");
}
}
전원 버튼 5개에 대한 일괄 처리
문자열의 각 문자를 한씩 가져와서 따로따로 사용해야함.
문자열은 equals 메소드 사용해야함.
char은 문자가 되기때문에 ==과 '' 사용해서 단순비교 가능하다.
compareTo 예제)
String s1 = "Hello";
String s2 = "Hello";
String s3 = "Ahello";
String s4 = "Zhello";
int r = s1.compareTo(s2);
System.out.println("s1과 s2 비교 결과 : " + r);
r = s1.compareTo(s3);
System.out.println("s1과 s3 비교 결과 : " + r);
r = s1.compareTo(s4);
System.out.println("s1과 s4 비교 결과 : " + r);
알파벳 순서상 같으므로 수치 비교까지 같이 출력됨.
첫번째 글자가 같으면 다음 글자를 비교해줌.
지금 들어온 문자가 앞에 올지, 뒤에 올지 비교해서 배치해줌.
공백문자와 null문자
공백문자 | ASKII 코드 값 가지고있음. 값이 없는 것이 아님 |
null | 비어있는 문자 |
starWith, indexOf, endsWith 비교 예제)
public static void main(String[] args) {
String name[] = new String[6];
name[0] = "유상민";
name[1] = "노희원";
name[2] = "백길현";
name[3] = "김철수";
name[4] = "안철수";
name[5] = "김민철수";
startWith
String nStr = "김";
for(String n : name) {
if(n.startsWith(nStr)) {
System.out.println(n);
}
}
System.out.println();
무조건 첫번째 글자만 비교해서 김씨인 사람들만 출력
nStr = "철";
for(String n : name) {
if(n.startsWith(nStr, 1)) {
System.out.println(n);
}
}
이름 2번째 글자가 "철"인 이름 출력
indexOf
for(String n : name) {
if(n.indexOf(nStr) > -1) {
System.out.println(n);
}
}
indexOf 없을 경우에 -1을 반환하게 때문에 0 이상이 된다면 내용이 들어있다는 의미이다.
nStr = "민";
for(String n : name) {
if(n.endsWith(nStr)) {
System.out.println(n);
}
}
끝이 "민"으로 끝나는 이름 출력
String cn = "aaa";
if(cn.equals("aaa")) {
}
cn에 저장된 값이 aaa라면 참
if("aaa".equals(en)){
}
aaa가 cn의 값과 같으면 참.
문자열이라고 만들어있는 "aaa" 자체가 인스턴스니까 뒤집어서 문자열을 비교대상으로서 기준으로 잡아 처리하는 것도 가능하다.
replace 예제)
String s1 = "abaccbacbacbacbcccabab";
String s2 = s1.replace('a', 'z');
System.out.println("s1 : " + s1);
System.out.println("s2 : " + s2);
System.out.println();
String s3 = s1.replace("c", "zz");
System.out.println("s1 : " + s1);
System.out.println("s3 : " + s3);
System.out.println();
String s4 = s1.replace("ab", ",");
System.out.println("s1 : " + s1);
System.out.println("s4 : " + s4);
replace는 원본은 변경하지 않음. 복사 후 복사된 내용을 바꾼 후 출력.
변경된 문자열 사용시에는 새로운 공간에 다시 대입해서 저장 후 변경된 문자열 사용 가능함.
바꾸기 전 기존의 문자열과 바꿔지는 문자의 갯수 차이는 상관 없음.
toLowerCase, toUpperCase 예제)
String oriStr = "HELLO";
String tarStr = oriStr.toLowerCase();
System.out.println("oriStr : " + oriStr);
System.out.println("tarStr : " + tarStr);
String oriStr2 = "Hello";
String tarStr2 = oriStr2.toLowerCase();
String tarStr3 = oriStr2.toUpperCase();
System.out.println("oriStr2 : " + oriStr2);
System.out.println("tarStr2 : " + tarStr2);
System.out.println("tarStr3 : " + tarStr3);
toLowerCase | 대문자 → 소문자 |
toUpperCase | 소문자 → 대문자 |
주로 (y/n) 선택시에 들어오는 문자를 소문자 또는 대문자로 일괄적으로 바꿔서 하나만 조건을 삼을 때 사용함.
대소문자 섞여있으면 다 같은걸로 바꿔준다.
trim 예제)
String oriStr3 = " Hello world ";
String trimStr = oriStr3.trim();
System.out.println("oriStr3 : " + oriStr3);
System.out.println("trimStr : " + trimStr);
문자 사이의 공백은 지우지 않고 앞과 뒤만 지움.
substring 예제)
String longStr = "Hello Java Programming World!!";
int stIdx = longStr.indexOf("Pro");
int endIdx = longStr.indexOf(" Wo");
String subStr = longStr.substring(stIdx, endIdx);
System.out.println(subStr);
System.out.println("전체 길이 : " + longStr.length()
+ ", stIdx : " + stIdx
+ ", endIdx : " + endIdx);
subString에 값을 집어넣는 방법 두가지
1. 괄호안에 하나만 넣는 방법(거기서부터 나머지 전부)
2. 두개 넣는 방법(A부터 B까지 추출)
split 예제)
longStr = "Hello Java Programming World";
String sub[] = longStr.split(" ", 3);
구분자를 집어넣어줌.
longStr의 경우에는 공백으로 나누어져있기 때문에 공백으로 구분해줌.
숫자를 지정하지 않으면 다 구분자를 사용해서 나눠줌.
숫자 입력시 분할 갯수를 지정해준다.
'JAVA' 카테고리의 다른 글
0407 JAVA - 예외처리 (0) | 2020.04.07 |
---|---|
0331 JAVA - 객체지향의 특성(추상화) (0) | 2020.03.31 |
0330 JAVA - 객체지향의 특성(다형성) (0) | 2020.03.31 |
0330 JAVA - 객체지향의 특성(상속) (0) | 2020.03.31 |
0327 JAVA - 객체 지향의 특성(상속) (0) | 2020.03.27 |