프로그래밍/Java

나도코딩 - 자바 코딩 무료 강의(기본편) - chap_03

건팔구 2024. 10. 26. 20:35

1. 문자열(전반)

package chap_03;

public class _01_String1 {
	public static void main(String[] args) {
		String s = "I live java and Python and C.";
		System.out.println(s);
		
		// 문자열 길이
		System.out.println(s.length()); // 29
		
		// 대소문자 변환
		System.out.println(s.toUpperCase()); // 대문자로
		System.out.println(s.toLowerCase()); // 소문자로

		
		// 포함 관계
		System.out.println(s.contains("java")); // 포함된다면 true
		System.out.println(s.contains("C#"));  // 포함되지 않는다면 false
		System.out.println(s.indexOf("java")); // 위치 정보 7
		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)
		
	}

}

 

요약

s.length() : 문자열의 길이

s.toUpperCase() : 대문자로 출력

s.toLowerCase() : 소문자로 출력

s.contains() : 문자의 포함 여부를 확인할 때 사용(포함되는 경우 true, 포함되지 않을경우 false 출력)

s.indexOf : 문자열의 위치정보 출력(포함되지 않는 문자열을 입력하는 겨웅 -1을 출력)

s.lastIndexOf : 마지막에 일치하는 문자열의 위치 정보 출력

s.startWith : 해당 문자열로 시작하는지에 대해서 참 거짓 출력

s.endWith : 해당 문자열로 끝나는 경우에 대해서 참 거짓 출력

 

2. 문자열(후반)

package chap_03;

public class _02_String2 {
	public static void main(String[] args) {
		String s = "I live java and Python and C.";
		
		// 문자열 변환
		System.out.println(s.replace("and", ",")); // "and"를 ","로 변환
		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("."))); // 시작 위치부터 끝 위치 "직전"
		
		// 공백 제거
		s = "         I love java.      ";
		System.out.println(s);
		System.out.println(s.trim()); // 앞 뒤 공백 제거
		
		// 문자열 결합
		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
	}

}

 

요약

s.replace("1", "2") : 1번의 문자열을 2번 문자로 변환

s.substring(시작위치) : 시작 위치부터 끝가지 문자열을 출력(이전 내용은 삭제)

s.trim() : 앞 뒤 공백 제거

s.concat() : 문자열을 결합 할때 사용

 

3. 문자열 비교

package chap_03;

public class _03_StringCompare {
	public static void main(String[] args) {
		// 문자열 비교
		String s1 = "Java";
		String s2 = "Pyton";
		
		System.out.println(s1.equals("Java")); // 문자열 내용이 같으면 true, 다르면 false
		System.out.println(s2.equalsIgnoreCase("python")); // 대소문자 구분 없이 문자열 내용이 같은지 여부 체크
		
		// 문자열 비교 심화
		s1 = "1234"; // 벽에 붙은 메모지의 비밀번호 정보 (참조)
		s2 = "1234";
		System.out.println(s1.equals(s2)); // true (내용)
		System.out.println(s1 == s2); // true (참조)
		
		s1 = new String("1234"); // 서로 다른곳에 데이터가 존재함
		s2 = new String("1234"); // 서로 다른곳에 데이터가 존재함
		System.out.println(s1.equals(s2)); // true
		System.out.println(s1 == s2); // false - 서로 다른 메모리 공간에 데이터가 존재하기 때문에 false
		
	}

	

}

 

요약

s.equlas : 문자열이 같은지 비교할 때 사용(같으면 true, 다르면 false 출력)

 

※추가적으로 equlas()와 ==은 다르다. 

1. equlas()은 문자열을 비교하는 경우에만 사용한다.

2. ==은 문자열의 주소를 비교할 경우에 사용한다.

 

4. 특수문자

package chap_03;

public class _04_EscapeSequence {
	public static void main(String[] args) {
		// 특수무자, 이스케이프 문자 (Escape Sequence, Escape Character, Special Charater)
		System.out.println("자바가");
		System.out.println("너무");
		System.out.println("재밌어요");
		
		System.out.println("자바가\n너무\n재밌어요");
		// \n : 줄바꿈
		
		// \t : 탭
		// 해물파전	9000원
		// 김치전		8000원
		// 부추전		8000원
		System.out.println("해물파전\t\t9000원");
		System.out.println("김치전\t\t8000원");
		System.out.println("부추전\t\t8000원");
		
		
		// \\ : 역슬래시
		System.out.println("C:\\Program Files\\Java");
		
		// \" : 큰따움표
		// 단비가 "냐옹" 이라고 했어요
		System.out.println("단비가 \"냐옹\" 이라고 했어요");
		
		
		// \' : 작은따움표
		System.out.println("단비가 \'뭘봐?\' 이라고 했어요");
		System.out.println("단비가 '뭘봐?' 이라고 했어요");
		
		char c = 'A';
		c = '\'';
		System.out.println(c);
	}

}

 

요약

\n : 줄바꿈

\t : 탭

\\ : 역슬래시

\" : 큰따움표

\' : 작은따움표

5.  퀴즈

문제

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

 

참고

- 주민등록번호는 13자리의 숫자로 구성

- 앞 6자리는 생년월일 정보, 뒷 7자리 중 첫 번째 숫자는 성별 정보

- 입력 데이터는 -을 포함한 14자리의 문자열 형태

 

예시

- "901231-1234567"인 경우 901231-1까지 출력

- "030708-4567890"인 경우 030708-4까지 출력

 

 

package chap_03;

public class _Quiz03 {
	public static void main(String[] args) {
		String a = "901231-1234567";
		String b = "030708-4567890";
		
		System.out.println(a.substring(0, 8));
		System.out.println(a.substring(0, a.indexOf("-") + 2)); // 9위치부터 - 위치 +2 직전까지
		System.out.println(b.substring(0, b.indexOf("-") + 2)); // 0위치부터 - 위치 +2 직전까지
		System.out.println(b.substring(0, 8));
	}

}