공부를 하자!/나도코딩 자바 기본편

[나도코딩 자바 기본편] 5일차: 문자열, 문자열 비교, 특수문자, 퀴즈3

kimchopchop 2024. 11. 21. 15:49

나도코딩 자바 기본편_5일차(24.11.21)
 

#013 <문자열>

String s = "I Like Java and Python and C.";
System.out.println(s);
 

1) 문자열의 길이

System.out.println(s.length()); → 29
 

2) 대소문자 변환

System.out.println(s.toUpperCase()); → 대문자로 변환
System.out.println(s.toLowerCase()); → 소문자로 변환
 

3) 포함 관계

System.out.println(s.contains("Java")); → 포함된다면 true
System.out.println(s.contains("C#")); → 포함되지 않는다면 false
System.out.println(s.indexOf("Java")); → 위치 정보("Java"라는 문자가 어디에 있는지 / 0부터 시작)
System.out.println(s.indexOf("C#")); → 포함되지 않는다면 -1
System.out.println(s.indexOf("and")); → 처음 일치하는 위치 정보 (12)
System.out.println(s.lastIndexOf("and")); → 마지막 일치하는 위치 정보 (23)
System.out.println(s.startsWith("I Like")); → 이 문자열로 시작하면 true (아니면 false)
System.out.println(s.endsWith(".")); → 이 문자열로 끝나면 true (아니면 false)
 

4) 문자열 변환

System.out.println(s.replace(" and", ",")); → "and"를 ","로 변환
System.out.println(s.substring(7)); → 인덱스 기준 7부터 시작 (이전 내용은 삭제) / 끝 위치 지정하지 않으면 문장 끝까지
 
// s 변수에 변환 결과 반영되는 것은 아님! → 이렇게 하려면 s = s.substring(7)
System.out.println(s.substring(s.indexOf("Java"))); → 7 대신 index of 넣어도 같은 결과 나옴
// "Java"가 시작하는 위치부터 "."이 시작하는 위치 바로 앞까지
// 시작 위치: "Java" 포함해서 출력 / 끝 위치: "." 빼고 직전까지 출력
System.out.println(s.substring(s.indexOf("Java"), s.indexOf("."))); → 시작 위치부터 끝 위치 "직전"까지
 

5) 공백 제거

s = " I Love Java. ";
System.out.println(s); → I Love Java.
System.out.println(s.trim()); → I Love Java. (앞뒤 공백 제거)
 

6) 문자열 결합

String s1 = "Java";
String s2 = "Python";
System.out.println(s1 + s2); JavaPython (정수 계산처럼 더하기)
// 단어 사이에 "," 넣을 때
System.out.println(s1 + "," + s2); → 방법1) 중간에 "," 넣어서 더하기 → Java,Python
System.out.println(s1.concat(",").concat(s2)); → 방법2) concat 사용 → Java,Python
 
 

#014 <문자열 비교>
1) 문자열 비교

String s1 = "Java";
String s2 = "Python";
 
System.out.println(s1.equals(s2)); → 문자열 내용이 같으면 true, 다르면 false → false
System.out.println(s1.equals("Java")); → 문자열 내용이 같으면 true, 다르면 false → true
 
// 대소문자 구분 없이 문자열 내용이 같은지 여부 체크
System.out.println(s2.equalsIgnoreCase("python"));
 

2) 문자열 비교 심화

- 선언 방법1) equals
s1 = "1234"; → 벽에 붙은 메모지의 비밀번호 정보 (참조)
s2 = "1234";
System.out.println(s1.equals(s2)); // 방법1) → true (내용 비교)
System.out.println(s1 == s2); // 방법2) → true (참조 비교)
 
- 선언 방법2) new String
s1 = new String("1234"); → 각각의 메모지에 비밀번호 적어서 제공
s2 = new String("1234"); → 같은 메모지가 아니기 때문에 서로 다름
System.out.println(s1.equals(s2)); → true (내용 비교)
System.out.println(s1 == s2); → false (참조 비교) → 서로 다른 메모지
 
→ 자바에서 문자열의 내용을 비교할 때는 등호 쓰지 말고 equals 써야 함!
 
 

#015 <특수문자>

-특수문자: 이스케이프 문자 (Escape Sequence, Escape Character, Special Character)
-종류: \n, \t, \\, \", \’
 

1) \n : 줄바꿈

System.out.println("자바가");
System.out.println("너무");
System.out.println("재밌어요");
 
System.out.println("자바가\n너무\n재밌어요");
 

2) \t : 탭 (여러 번 사용 가능)

// 해물파전 9000원
// 김치전 8000원
// 부추전 8000원
 
System.out.println("해물파전\t\t9000원");
System.out.println("김치전\t\t8000원");
System.out.println("부추전\t\t8000원");
 

3) \\: 역슬래시 (두 번 쓰기)

System.out.println("C:\\Program Files\\Java");
 

4) \": 큰따옴표

// 단비가 "냐옹" 이라고 했어요
System.out.println("단비가 \"나옹\"이라고 했어요.");
 

5) \': 작은따옴표

// 단비가 '뭘 봐?'라는 표정을 지었어요
System.out.println("단비가 \'뭘 봐?\'라는 표정을 지었어요.");
System.out.println("단비가 '뭘 봐?'라는 표정을 지었어요."); // 작은따옴표는 그냥 써도 출력됨
 
- 한 글자만 표현할 때
char c = 'A'; // 한 글자만 표현할 때는 작은따옴표 사이에 넣기
// c = ''' // c에 작은따옴표 하나를 넣고 싶은 경우
c = '\''; // 역슬래시 붙여서 넣기
System.out.println(c); // -> '
 

<퀴즈3>

-주민동록번호에서 생년월일 및 성별까지만 출력하는 프로그램을 작성하시오

-참고
1) 주민등록번호는 13자리의 숫자로 구성
2) 앞 6자리는 생년월일 정보, 뒷 7자리 중 첫 번째 숫자는 성별 정보
3) 입력 데이터는 -을 포함한 14자리의 문자열 형태

-실행 결과
-901231-1 → 값이 "901231-1234567"인 경우
-030708-4 → 값이 "030708-4567890"인 경우
 

내 코드

// 값이 "901231-1234567"인 경우
String no = "901231-1234567";
System.out.println(no.substring(0,8));

// 값이 "030708-4567890"인 경우
no = "030708-4567890"; → (퀴즈2에서는 새로 변수 선언했는데 그럴 필요 없었다! 그냥 변경하면 되는 거였다...!)
System.out.println(no.substring(0, 8));

선생님 코드

-방법1) 8번째 자리 직전까지 자르기
String id = "901231-1234567";
System.out.println(id.substring(0, 8));

-방법2) 하이픈에서 두 자리 뒤의 직전까지 자르기
id = "030708-4567890";
System.out.println(id.substring(0, id.indexOf("-") + 2)); // 0 위치부터 하이픈 위치 +2 직전까지
 

오늘의 한마디

 

오늘은 시간 가는 줄 모르고 강의 듣고 퀴즈 풀었다.
뭐야... 코딩 조금 재밌는 것 같아...