String
│
├─ 길이
│ └─ length()
│ → 몇 글자야?
│
├─ 비교
│ ├─ equals()
│ │ → 내용이 같아?
│ │
│ ├─ equalsIgnoreCase()
│ │ → 대소문자 무시하고 같아?
│ │
│ ├─ compareTo()
│ │ → 문자열 비교 (같으면 0)
│ │
│ └─ compareToIgnoreCase()
│ → 대소문자 무시하고 비교
│
├─ 찾기
│ ├─ indexOf()
│ │ → 처음 어디 있어?
│ │
│ └─ lastIndexOf()
│ → 마지막 어디 있어?
│
├─ 자르기
│ └─ substring()
│ → 어디부터 잘라?
│
├─ 문자 하나
│ └─ charAt()
│ → 몇 번째 글자야?
│
├─ 포함 여부
│ └─ contains()
│ → 이 문자열 들어 있어?
│
├─ 변경
│ └─ replace()
│ → 이걸 저걸로 바꿔
│
├─ 공백
│ └─ trim()
│ → 앞뒤 공백 없애
│
└─ 대소문자 변경
├─ toUpperCase()
│ → 대문자로
│
└─ toLowerCase()
→ 소문자로
int len = s1.length();
System.out.println("len:" + len);
//"Have a nice day"의 글자 개수
// 결과 15
System.out.println(s1 == s2);
//결과 : false
String a = "hello";
String b = "hello";
a.equals(b);
// 결과 : true
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
결과
false
true
왜냐하면
public class Test {
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "hello";
boolean result = s1.equalsIgnoreCase(s2);
System.out.println(result);
// 대소문자를 무시하기 때문에 Hello와 hello가 같다고 판단!
// 결과 : true
}
}
String s1 = "apple";
String s2 = "apple";
int result = s1.compareTo(s2);
System.out.println(result);
//둘이 똑같기 때문에
//결과 : 0
//이런식으로도 사용할 수 있음
if (result == 0) {
System.out.println("같다");
} else {
System.out.println("다르다");
}
String s1 = "Hello";
String s2 = "hello";
int result = s1.compareToIgnoreCase(s2);
System.out.println(result);
//대소문자를 무시하면 둘이 같으니까
//결과 : 0
String s = "Hello Java";
int result = s.indexOf("Java");
System.out.println(result);
// 문자 위치를 세어봤을 때 J 위치가 6
// java가 6번 위치에서 시작한다!
// 결과 : 6
String s = "banana";
System.out.println(s.indexOf("a")); //처음 a 위치
System.out.println(s.lastIndexOf("a")); //마지막 a 위치
// 결과 : 1
5
String s = "Hello Java";
String result = s.substring(6); // 6번부터 끝까지 가져오기
System.out.println(result);
//결과 : Java
위치를 보면
H e l l o J a v a
0 1 2 3 4 5 6 7 8 9
↑
만약 두 개를 넣으면?
String s = "Hello Java";
String result = s.substring(0, 5);
System.out.println(result);
//결과 : Hello
위치를 보면
0 1 2 3 4 5
H e l l o
substring(0, 5)
↑ ↑
포함 미포함
String s = "Hello";
char result = s.charAt(1);
System.out.println(result);
// 1번 글자는 e
// 결과 : e
String s = "Hello Java";
System.out.println(s.contains("Java"));
// Java가 있으니까
// 결과 : true
String s = "Hello Java";
String result = s.replace("Java", "Python");
System.out.println(result);
// java → python
// 결과 : Hello Python
String s = " Hello ";
String result = s.trim();
System.out.println(result);
//결과 : Hello
but,
String s = " Hello Java ";
// 이 경우 가운데 공백은 그대로 두기
// 결과 : Hello Java
String s = "Hello Java";
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase());
//결과
//HELLO JAVA
//hello java
1.투두리스트 앱
String todo = " 자바 공부하기 ";
사용자가 실제로 이렇게 할 일을 입력한다고 했을 때
todo.length();
" 자바 공부하기 "가 몇 글자인지 확인.
할 일 제목은 1~100자까지만 입력해주세요.
실제 앱에서는 같은 입력값 검증에 사용해.
" 자바 공부하기 "
사용자가 실수로 이렇게 입력해도
"자바 공부하기"
실제로 저장할 때는 이렇게 정리되게 만들어 줄 수 있음.
String title = "어린 왕자";
int index = title.indexOf("왕");
"왕"이 시작되는 위치를 알려줌. 검색 기능이나 문자열을 분석할 때 사용할 수 있음.
String category = "식비";
String memo = "편의점에서 간식";
String payment = "카카오뱅크";
if (category.equals("식비")) {
System.out.println("식비 지출입니다.");
}
이때 equals()를 사용해서 이렇게 출력할 수 있음.
식비 → 150,000원
교통 → 80,000원
쇼핑 → 50,000원
그리고 카데고리에 따라 통계도 만들 수 있음.
String id = "bada123";
String password = "abc1234";
if (id.equals(inputId)) {
System.out.println("아이디가 같습니다.");
}
또 equals()를 사용해서 로그인 과정에서 입력값과 저장된 값을 비교하는 식으로 사용할 수 있음. 다만 실제 비밀번호는 이런 식으로 평문 String을 단순 비교/저장하면 안 되고, 해시 등의 보안 방식을 사용해야 함.
if (password.length() < 8) {
System.out.println("비밀번호는 8자 이상이어야 합니다.");
}
회원가입할 때 입력값 검증에 사용가능함.
if (password.contains(" ")) {
System.out.println("비밀번호에 공백을 사용할 수 없습니다.");
}
이런 식으로 입력값을 검사할 수 있음.
단순히 암기만 하려고 하지말고 이 메서드가 실제 기능으로 어떻게 연결되는지 계속 생각하고 실습하면서 공부하면 나중에 Spring 공부할 때도 도움이 될 것.