자바 주요 메서드

조수경·2021년 10월 6일
0

JAVA

목록 보기
20/26

String

  • 자바의 라이브러리
  • 여러개의 문자를 사용하기 쉽게 만들어 놓은 클래스
    //라이브러리: 클래스이며 다른 사람이 참조해서 사용할 수 있는 것
    //API: 라이브러리를 사용할 수 있는 방법을 적어 놓은것

String의 주요 메서드

  • equals(): 문자열의 내용이 같은지 반환한다.
  • length(): 문자열의 길이를 반환한다.
  • charAt(): 특정 인덱스에 위치한 문자를 반환한다.
  • substring(): 문자열의 특정 부분을 잘라서 반환한다.
  • indexOf(): 문자열 내의 특정 문자의 인덱스를 반환한다.
  • contains(): 문자열이 특정 문자열을 포함하고 있는지 여부를 반환한다.
  • split(): 문자열의 특정 문자를 기준으로 나누어 배열형태로 반환한다.
  • trim(): 문자열 앞뒤의 공백을 제거해 반환한다.
  • valueOf(): 다른 타입의 데이터를 문자열로 변환해 반환한다.

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)
}
}

profile
신입 개발자 입니다!!!

0개의 댓글