boolean equals = "문자열".equals("문자열");
//불린 타입으로 반환 .equals앞에는 null이 들어갈수 없고 string이 들어가야 함
equals(): 문자열의 내용이 같은지 반환한다.
String str1 = "문자열"; String str2 = null; System.out.println(str1.equals(str2)); System.out.println(str2.equals(str1)); //파라미터에는 null이 들어갈 수 있지만 equals앞의 변수에는 null이 들어가면 안됨
length(): 문자열의 길이를 반환한다.
String str = "12345"; int length = str.length(); // 길이 5를 인트 타입으로 반환 for(int i = 0; i < length; i++) { char charAt = str.charAt(i); //charAt는 string클래스의 메서드 System.out.println(charAt); } /*결과 * 1 * 2 * 3 * 4 * 5 */
charAt(): 특정 인덱스에 위치한 문자하나를 반환한다.
//문자열 뒤집기 12345->54321
String rev = ""; //뒤에서 부터 한글자씩 가져와서 넣기 for(int i = str.length() - 1; 0 <= i; i--) { rev += str.charAt(i); } System.out.println(rev);
substring(): 문자열의 특정 부분을 잘라서 반환한다.
str = "0123456789"; String sub1 = str.substring(3); //3번 인덱스부터 잘라서 반환 - 3456789 System.out.println(sub1); String sub2 = str.substring(5, 8); // (시작 인덱스, 끝나는 인덱스: 내용에 포함되지 않음)- 567번만 반환됨 System.out.println(sub2);
indexOf(): 문자열 내의 특정 문자의 인덱스를 반환한다.
str = "수박 오렌지 귤 블루베리"; int index = str.indexOf("오렌지"); //오렌지의 시작하는 인덱스 반환 : 3반환 System.out.println(index); //substring과 indexOf를 조합해서 문자열 자르기 String[] menu = { "수박 20000원", "오렌지 100000원", "귤 500원", "블루베리 3000원" };
//이름만 가져오고 싶을때 for (int i = 0; i < menu.length; i++) { String name = menu[i].substring(0, menu[i].indexOf(" ")); System.out.println(name); // 시작 인덱스는 0으로 같지만 끝나는 인덱스는 모두 다름 // 이름이끝난다음 공백이 옴 공백을 찾아서 반환해주면 끝내는 인덱스가됨 }
// 가격만 가져오고 싶을때 for (int i = 0; i < menu.length; i++) { int price = Integer.parseInt(menu[i].substring(menu[i].indexOf(" ")+1, menu[i].indexOf("원"))); System.out.println(price); } //공백 다음부터 추출해서 원 전까지 출력 //int 타입으로 형변환 해야함
contains(): 문자열이 특정 문자열을 포함하고 있는지 여부를 반환한다.
str = "abcd"; boolean contains = str.contains("c"); System.out.println(contains); //글자가 포함되어 있어 결과는 true
//오렌지가 메뉴의 몇번 인덱스에 있는지 찾기 for (int i = 0; i < menu.length; i++) { if(menu[i].contains("오렌지")) { //조건식이 true면 아래 문장 실행 System.out.println("오렌지는"+i+"번 인덱스에 있습니다."); } }
split(): 문자열의 특정 문자를 기준으로 나누어 배열형태로 반환한다.
str = "a/b/c"; String[] split = str.split("/"); // 배열이 리턴됨 System.out.println(Arrays.toString(split));
//메뉴명과 가격을 공백을 기준으로 나누기 for (int i = 0; i < menu.length; i++) { String[] arr = menu[i].split(" "); System.out.println("메뉴명: "+arr[0]+" / 가격: "+arr[1]); }
trim(): 문자열 앞뒤의 공백을 제거해 반환한다.사이에 있는 공백은 없애지 못함
str = " 문 자 열 "; 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());
valueOf(): 다른 타입의 데이터를 문자열로 변환해 반환한다.
int number = 10; str = number + ""; //자바는 모든 타입이 문자열과 만나게 되면 문자열로 바뀌게 됨 str = String.valueOf(number); //valueOf는 String클래스를 사용하여 사용 System.out.println(str); //string타입의 10이 출력됨 System.out.println("문자열"+"추가"); boolean equal = "문자열".equals("문자열"); String str1 = "문자열"; str1 += "추가"; //문자열은 변경되면 객체를 새로 만듬 -> 메모리 낭비와 시간이 더 소요됨
<문제>
숫자를 입력받아 입력받은 숫자에 3자리 마다 콤마(,)를 붙여 출력해주세요
123,456,789
사용자가 입력한 숫자에서 뒤에서부터 한자리씩 가져와서 세로운 변수에 더함 세번더하면 앞에 콤마 찍기를 반복
package i_api;import java.util.Scanner;
import e_oop.ScanUtil;
public class SetComma {
public static void main(String[] args) {
System.out.println("숫자를 입력해 주세요");
String number = ScanUtil.nextLine();
//문자열 뒤집기String number2 = ""; //뒤에서 부터 한글자씩 가져와서 넣기(담을 곳)
int count = 0;
for(int i = number.length() - 1; i >= 0; i--) {
//1234567 숫자를 입력받으면
//숫자를 뒤에 붙히지 않고 앞에 붙이면 숫자가 뒤집히지 않음
number2 = number.charAt(i) + number2; //숫자의 앞에 더함
count++;
if(count % 3 == 0 && count != number.length()) {
number2 = ","+number2;
}
}
System.out.println(number2)
}
}