자바 : 문자열 다루기(equals, substring, parseInt)

임지원·2023년 10월 25일

자바 예제를 풀던 중 문자열을 비교해야 할 상황이 생겼다.

철수가 술을 마실 수 있는지 구하시오

1. equals 두 문자열이 같은지 비교하기

String str1 = "hi";
String str2 = "hi";
System.out.println(str1 == str2);

이렇게 하면 true가 나온다.

String str1 = "hi";
String str2 = new Scanner(System.in).nextLine();
System.out.println(str1 == str2);


하지만 입력으로 hi를 해주면 false가 나온다.

String str1 = "hi";
String str2 = new Scanner(System.in).nextLine();
System.out.println(str1.equals(str2));

equals를 쓰면 true가 나온다.

문자열을 비교할 때 ==은 주소가 같은지 확인하는 것
equals()를 쓰면 내용이 같은지 확인하는 것

2. substring 문자열 자르기

- substring(int index) : index 부터의 값의 문자열을 리턴

String str1 = "철수는 20";
String str2 = str1.substring(4);
System.out.println(str2);

이 코드에서 숫자만 str2에 저장하기 위해서 0번의 인덱스부터 시작하는 "철수는 20"에서 "2"의 인덱스인 4번부터 가져와 저장했다.

- substring(int index1, int index2) : index1 부터 index2 이전까지의 값의 문자열을 리턴

String str1 = "철수는 20살이다.";
String str2 = str1.substring(4, 6);
System.out.println(str2);

이 코드에서 숫자만 str2에 저장하기 위해서는 "2"의 index 4부터 "살"의 index 6 이전까지 저장하면 된다.

3. parseInt로 문자열을 정수형으로 바꾸기

위에 공부한 두 개를 합쳐서 철수의 나이를 구하고 철수의 나이가 20과 같은지는 구할 수 있다.

String str1 = "철수는 20살이다.";
String str2 = str1.substring(4,6);
if(str2.equals("20")){
	System.out.println("술을 마실 수 있습니다.");
}

그러나 20살 이상이면 술을 마실 수 있는 프로그램을 만들기 위해서는 문자열을 정수로 바꿀 수 있어야 한다.

String str1 = "철수는 21살이다.";
String str2 = str1.substring(4,6);
int age = Integer.parseInt(str2);
if(age>19){
	System.out.println("술을 마실 수 있습니다.");
}

Integer.parseInt("");를 사용하면 ""안에 문자열을 10진수의 Integer형으로 변환해준다.

profile
백엔드 새싹

0개의 댓글