자바 예제를 풀던 중 문자열을 비교해야 할 상황이 생겼다.
철수가 술을 마실 수 있는지 구하시오
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()를 쓰면 내용이 같은지 확인하는 것
String str1 = "철수는 20";
String str2 = str1.substring(4);
System.out.println(str2);
이 코드에서 숫자만 str2에 저장하기 위해서 0번의 인덱스부터 시작하는 "철수는 20"에서 "2"의 인덱스인 4번부터 가져와 저장했다.
String str1 = "철수는 20살이다.";
String str2 = str1.substring(4, 6);
System.out.println(str2);
이 코드에서 숫자만 str2에 저장하기 위해서는 "2"의 index 4부터 "살"의 index 6 이전까지 저장하면 된다.
위에 공부한 두 개를 합쳐서 철수의 나이를 구하고 철수의 나이가 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형으로 변환해준다.