package i_api;
import java.util.Arrays;
public class StringClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* String
* 여러개의 문자를 사용하기 쉽게 만들어 놓은 클래스
* (문자배열을 사용하기 쉽게 만들어 놓음 )
* String 의 주요 메서드
* - equals() : 문자열의 내용이 같은지 반환한다.
* - length() : 문자열의 길이를 반환한다.
* - charAt(인덱스파라미터입력) : 특정 인덱스에 위치한 문자를 반환한다.
* - substring(인덱스 2개를 파라미터로 넘김) : 문자열의 특정부분을 잘라서 반환한다.
* - indexOf() : 문자열 내의 특정 문자의 인덱스를 반환한다.
* - contains() : 문자열이 특정 문자열을 포함하고 있는지 반환한다.
* - split() : 문자열을 특정 문자를 기준으로 나누어 배열 형태로 반환한다.
* - trim() : 문자열 앞뒤의 공백을 제거해 반환한다.
* - valueOf() : 다른 타입의 데이터를 문자열로 변환해 반환한다.
* - replace() : 문자열 내의 특정 문자를 다른 문자로 변경한다.
* api : 어떤 기능을 사용하기 쉽게 -> 간편하게 갖다 쓸 수 있게
*/
//실제로 사용해보자
boolean equals = "문자열".equals("문자열");
//==으로 비교를 하게되면 문자열을 비교하는게 아니라 문자열이 저장된 주소를 보는것
System.out.println(equals);
//주의할점 : 왼쪽에 있는 문자열을 참조하는것 왼쪽은 null이면 안됨 오른쪽문자열은 null이어도되
String str1 = "문자열";
String str2 = null;
System.out.println(str1.equals(str2));
//1번에서 equals 를 호출해서 str2를 비교하는것
//System.out.println(str2.equals(str1));
//NULL에서는 equals를 불러올 수 없다. 오류가 만들어짐
// null 이 있을 수 있는 변수를 앞에 두지 않는다.
String str = "12345";
int length = str.length();
for(int i = 0 ; i < length ; i++){
char charAt = str.charAt(i);
System.out.println(charAt);
//i 는 인덱스다. i 가 0,1,2,3,4, -> 반환되는건 1,2,3,4,5 (str의 )
}
//문자열 뒤집기
String rev = "";
for(int i = str.length() - 1 ; 0 <= i ; i-- ){
rev += str.charAt(i);
}
System.out.println(rev);
str = "0123456789";
String sub1 = str.substring(3); // 3번 인덱스부터 잘라서 반환한다.
System.out.println(sub1);
String sub2 = str.substring(5,8) ;
// 5번 인덱스부터 8번 인덱스 전까지 잘라서 반환한다.
System.out.println(sub2) ;
str = "수박 오렌지 귤 블루베리";
int index = str.indexOf("오렌지"); //오렌지의 시작 인덱스를 반환한다.
System.out.println(index);
//substring 과 indexOf 는 같이 사용하는 경우가 많다.
//substring 과 indexOf를 조합해서 문자열 자르기
String[] menu = {
"수박 2000원",
"오렌지 100000원",
"귤 500원",
"블루베리 3000원"
};
for(int i = 0 ; i < menu.length; i++){
String name = menu[i].substring(0, menu[i].indexOf(" "));
System.out.println(name);
String num = menu[i].substring(menu[i].indexOf(" ") + 1 , menu[i].indexOf("원"));
System.out.println( Integer.parseInt(num));
// Integer.parseInt() 괄호 안에는 문자열들이 들어가면 안됨.
}
str = "abcd" ;
str.contains("c");
//"괄호에 있는 애가 str에 포함되어 있는지 아닌지를 알려줌"
boolean contains = str.contains("c");
System.out.println(contains);
//오렌지가 메뉴의 몇번 인덱스에 있는지 찾기
for ( int i = 0 ; i < menu.length; i++){
if(menu[i].contains("오렌지")) {
System.out.println("오렌지는 " + i + " 번 인덱스에 있습니다.");
}
}
str = "a/b/c";
str.split("/");
// /로 나눠진 a,b,c 를 string 타입의 배열로 반환을 해준다.
String[] split = str.split("/");
System.out.println(Arrays.toString(split));
for ( int i = 0 ; i < menu.length; i++){
String[] m = menu[i].split(" ");
System.out.println("메뉴명 : " + m[0] + "/ 가격 : " + m[1]);
}
str = " 문자열 ";
str.trim();
String trim = str.trim();
System.out.println("[" + str + "] -> [" + trim + "]");
//사용자가 입력하는데 실수하는 것을 방지해준다.
//사용자의 실수로 아이디나 비밀번호 앞뒤에 공백이 들어가는 것을 방지하기 위해 사용할 수 있다.
String id = " myid";
String password = "mypassword ";
System.out.println(id);
System.out.println(password);
System.out.println(id.trim());
System.out.println(password.trim());
//1.
int number = 10;
str = number + ""; //(문자열을 만나게 되면 무조건 문자열이되니까.)
//2. 좋은 방법은 메서드를 사용하는것.
str = String.valueOf(number);
str = "123456789";
str = str.replace("3" , "짝");
System.out.println(str);
str = str.replace("6", "짝" ) ;
str = str.replace("9", "짝" ) ;
System.out.println(str);
//전부다 다 바꿔줌
str = "banana" ;
str = str.replace("a", "new");
System.out.println(str);
}
}
댓글
댓글 쓰기