<문자열>
문자열 변수 s 정의
public static void main(String[] args) {
String s = "I like Java and Python and C.";
System.out.println(s);
문자열의 길이
* length
System.out.println(s.length()); // 29
대소문자 변환
* UpperCase : 대문자 변환
* LowerCase : 소문자 변환
System.out.println(s.toUpperCase()); // 대문자로
System.out.println(s.toLowerCase()); // 소문자로
포함 관계
* contains : 포함 되면 true, 포함되지 않으면 false
* indexOf : 문자열의 위치 정보 (문자열이 포함되지 않으면 -1)
* lastindexOf : 마지막 일치하는 위치 정보
* startWith : 해당 문자열로 시작하면 true (아니면 false)
* endWith : 해당 문자열로 끝나면 true (아니면 false)
ex.
System.out.println(s.contains("Java")); // 포함된다면 true
System.out.println(s.contains("C#")); // 포함되지 않는다면 false
System.out.println(s.indexOf("Java")); // 위치 정보 7 (참고: 문자열의 위치는 0부터 시작)
System.out.println(s.indexOf("C#")); // 문자열이 포함되지 않으면 -1
System.out.println(s.indexOf("and")); // 처음 만나는 위치 정보
System.out.println(s.lastIndexOf("and")); // 마지막 일치하는 위치 정보
System.out.println(s.startsWith("I like")); // 해당 문자열로 시작하면 true (아니면 false)
System.out.println(s.endsWith(".")); // 해당 문자열로 끝나면 true (아니면 false)
문자열 변환
문자열 변수 s 정의
public static void main(String[] args) {
String s = "I like Java and Python and C.";
* replace
System.out.println(s.replace(" and", ",")); // "and" 를 ","로 변환
-> I like Java, Python, C.
* substring
System.out.println(s.substring(7)); // 인덱스 기준 7 부터 시작 (이전 내용은 삭제)
System.out.println(s.substring(s.indexOf("Java"))); // "Java" 가 시작하는 위치부터, "." 이 시작하는 위치 바로 앞까지
System.out.println(s.substring(s.indexOf("Java"), s.indexOf("."))); // 시작 위치부터 끝 위치 "직전" 까지
->
Java and Python and C.
Java and Python and C.
Java and Python and C
공백 제거
* trim : 앞뒤 공백 제거
s = " I love Java. ";
System.out.println(s); // I love Java.
System.out.println(s.trim()); // I love Java.
문자열 결합
* concat : 문자열 결합
String s1 = "Java";
String s2 = "Python";
System.out.println(s1 + s2); // JavaPython
System.out.println(s1 + "," + s2); // Java,Python
System.out.println(s1.concat(",").concat(s2)); // Java,Python
문자열 비교
* equals : 문자열 비교
* equalsIgnoreCase : '대소문자 구분 없이' 문자열 내용 같은지 비교
String s1 = "Java";
String s2 = "Python";
System.out.println(s1.equals(s2)); // 문자열 내용이 같으면 true, 다르면 false (false)
System.out.println(s1.equals("Java")); // true
System.out.println(s2.equals("python")); // false
System.out.println(s2.equalsIgnoreCase("python"));
// 대소문자 구분 없이 문자열 내용이 같은지 여부 체크 (true)
문자열 비교 심화
s1 = "1234"; // 벽에 붙은 메모지의 비밀번호 정보 (참조)
s2 = "1234";
// 벽에 붙은 메모지 '하나'만 가지고 비밀번호를 참조
System.out.println(s1.equals(s2)); // true (내용을 비교)
System.out.println(s1 == s2);// true (참조 하는 곳을 비교)
s1과 s2는 같은 곳을 참조 하기 때문에, 등호(==)로 비교했을 때 true 출력
s1,s2를 다른 방식으로 선언 했을 경우 (new String)
s1 = new String("1234");
s2 = new String("1234");
// s1과 s2가 참조하는 곳이 각각 다름 (서로 다른 곳에 데이터가 존재)
// 각각의 서로 다른 메모지에다가 비밀번호를 적은 것임
System.out.println(s1.equals(s2)); // true
System.out.println(s1 == s2); // false
s1과 s2가 다른 곳을 참조하고 있기 때문에, 등호(==)로 비교했을 때 false 출력.
따라서, 일반적으로 자바에서 문자열의 내용을 비교할 땐 등호 대신 equals를 써야 한다.
특수문자, 이스케이프 문자
* \n : 줄바꿈
System.out.println("자바가\n너무\n재밌어요");
->
자바가
너무
재밌어요
* \\ : 역슬래시
System.out.println("C:\\Program Files\\Java"); // C:\Program Files\Java
* \" : 큰따옴표
System.out.println("단비가 \"냐옹\"이라고 했어요"); // 단비가 "냐옹" 이라고 했어요
* \' : 작은따옴표
System.out.println("단비가 \'뭘 봐?\' 라는 표정을 지었어요"); // 단비가 '뭘 봐?' 라는 표정을 지었어요
System.out.println("단비가 '뭘 봐?' 라는 표정을 지었어요"); // 단비가 '뭘 봐?' 라는 표정을 지었어요
-> 같은 결과 값 출력
단, 캐릭터의 경우 ' '를 사용해 하나의 문자열을 저장하기 때문에 \'를 사용해야 한다.
char c = 'A';
c = '\'';
System.out.println(c); // '
퀴즈
퀴즈3
주민등록번호에서 생년월일 및 성별까지만 출력하는 프로그램을 작성하시오
참고
- 주민등록번호는 13자리의 숫자로 구성
- 앞 6자리는 생년월일 정보, 뒷 7자리 중 첫 번째 숫자는 성별 정보
- 입력 데이터는 -을 포함한 14자리의 문자열 형태
예시
- "901231-1234567"인 경우 901231-1까지 출력
- "030708-4567890"인 경우 030708-4까지 출력
답
String id = "901231-1234567"; // 주민번호 13자리
System.out.println(id.substring(0, 8)); // 0 위치부터 8 위치 직전까지
id = "030708-4567890";
System.out.println(id.substring(0, id.indexOf("-") + 2)); // 0 위치부터 하이픈 위치 + 2 직전까지
->
901231-1
030708-4