java & comment 9일차 강의

김용진·2023년 7월 13일
0
post-custom-banner

1. String

String 라이브러리에 있는 여러 명령문을 코드짜보았다.

package string;

public class Main01 {

	public static void main(String[] args) {
		String str1 = "자바 Programming";
		String str2 = new String("Java"); //String도 하나의 객체선언
		
		System.out.println(str1);
		System.out.println(str2);
		
		// 문자열의 길이 조회
		int str1_len = str1.length();
		int str2_len = str2.length();
		
		System.out.println("str1_len" + str1_len);
		System.out.println("str2_len" + str2.length()); // 선언없이 그냥해도ok
		System.out.println("-------------------------");
		
		// 특정 문자열이 처음으로 나타나는 위치를 조회
		int str1_pos = str1.indexOf(" ");
		int str2_pos = str2.indexOf("a");
		System.out.println("str1_pos : " + str1_pos);
		System.out.println("str2_pos : " + str2_pos);
		System.out.println("--------------------------");
		// 특정 문자열이 나타나는 마지막 위치를 조회
		int str1_last_pos = str1.lastIndexOf(" ");
		int str2_last_pos = str2.lastIndexOf("a");
		System.out.println("str1_last_pos : " + str1_last_pos);
		System.out.println("str2_last_pos : " + str2_last_pos);
		System.out.println("--------------------------");
		
		// A를 B로 변경하기
		String new_str1 = str1.replace(" ","-");
		String new_str2 = str2.replace("a","A");
		System.out.println("new_str1 : " + new_str1);
		System.out.println("new_str2 : " + new_str2);
		
		// 대소문자 변경하기
		System.out.println("--------------------------");
		String upper = new_str2.toUpperCase();
		String lower = new_str2.toLowerCase();
		System.out.println("upper : "+upper);
		System.out.println("lower : "+lower);
		
		// 문자열앞뒤 공백 제거
		System.out.println("--------------------------");
		String input = " enjoy java programming      ";
		String output = input.trim();
		String output2 = input.replace(" " , ""); // 공백을 아예 없애기
		System.out.println("input : "+input); //문자열 앞의 공백 제거
		System.out.println("output : "+output);
		System.out.println("output2 : "+output2);
		System.out.println("--------------------------");
		
		// 문자열 비교하기
		boolean isSam = str1.equals(str2);
		if(isSam) {
			System.out.println("같다");
		}
		else {
			System.out.println("다르다");
		}
		System.out.println("--------------------------");

		// 문자열 자르기 .substring(처음 파라미터,두번째 파라미터)
		// 첫번째 파라미터 : 시작 위치
		// 두번째 파라미터 : 끝 위치
		
		String sub_str1 = str1.substring(0 ,2);
		System.out.println("str1 : " + str1);
		System.out.println("sub_str1 : " + sub_str1); 
		// 띄어쓰기까지 안되어 있는데, 0에서 2전, 즉 0~1까지만 호출한다는걸 알 수 있다
		// 두 번째 파라미터가 없는 경우 끝까지 자른다.
		
		String sub_str2 = str1.substring(3); // 3부터 끝까지 호출
		System.out.println("sub_str2 : " + sub_str2); 
		System.out.println("--------------------------");

		// 형식에 따른 문자열 출력을 위한 static 메서드 사용
		/*
		 * - %d : 정수
		 * - %s : 문자
		 * - %f : float형 소수
		 * - %3d : 숫자를 3자리로 맞춰서 출력. 자릿수가 맞지 않으면, 앞에 공백 출력
		 * - %03d : 자릿수가 맞지 않으면 0을 출력
		 * - %3s : 문자열을 3자리로 맞춰서 출력, 자릿수가 맞지 않으면, 앞에 공백 출력
		 * 			(%03s와 같은 형식은 사용이 불가)
		 */
		
		int yy = 2023;
		int mm = 3;
		int dd = 14;
		String gender = "남자";
		String result = String.format("%d년 %02d월 %02d일 %s", yy, mm, dd, gender);
		
		System.out.println(result);
		System.out.println("--------------------------");

		// 주어진 글자를 기준으로 잘라내어서 배열로 변환
		String src = "C++/Java/C#/JavaScript/VB";
		String[] data = src.split("/"); // '/'를 기준으로 잘라서 배열에 저장
		for(int i = 0; i < data.length; i++) {
			System.out.println(data[i]);
		}
		System.out.println("--------------------------");
	}

}

2. 정규표현식

2-1. 정규표현식이란?

  • 정규표현식(regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 "형식언어"이다
  • 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 '문자열의 검색과 치환'
    을 위해 지원하고 있다.

2-2. 정규표현식사용

boolean Java.util.regex.Pattern.matches(String arg0,CharSequence arg1)

  • arg0 : 정규표현식 문자열
  • arg1 : 형식을 검사받기 위한 내용
    즉, arg1이 arg0의 형식에 맞는지를 검사하고 결과를 boolean형태로 리턴

3. 예외처리

3-1. 에러의 종류

컴파일 에러

- 소스코드의 구문 오류로 인하여 컴파일이 불가능한 상태
- 이클립스에서 빨간색으로 표시되는 경우에 해당한다.
- 프로그램을 실행하기 전에 발견되므로 상대적으로 고치기 쉽다.

런타임 에러

- 구문상의 에러는 없지만, 프로그램이 실행되는 과정에서 다양한 
경우의 수에 대응하지 못하여발생하는 예외 상황.
- 런타임에러가 발생하면 프로그램은 강제 종료한다.
- 우리가 프로그램의 에러라고 부르는 현상은 대부분 런타임 에러에
해당된다.

3-2. 런타임 에러의 종류

런타임 에러에는 프로그램 자체의 구조적인 문제로 인한 논리적 오류와 자바 가상 머신 자체의 문제로 인한 오류, 그리고 예외가 있다.

논리 오류

  • 논리적인 모순이 생기지 않도록 코드 작성.
  • 자바 가상 머신 자체 오류
    -> 프로그래머가 책임 질 수 있는 수준의 오류가 아니다.
  • 예외(Exception)
    -> 프로그램 실행 중에 발생할 수 있는 예기치 않은 사건으로, 프로그래머 의 노력으로 처리할 수 있다.
    -> 자바 가상 머신은 프로그램 실행중에 예외가 발생하면 관련된 예외 클래스로부터 예외 객체를 생성하여 프로그램에서 지정된 예외 처리 구문으로 넘긴다.
    -> 예외가 발생하면 프로그램에 지정된 예외 처리 구문이 자바 가상머신에 의해 호출되고, 이때 전달되는 예외 객체를 넘겨받아 적절한 처리를 수행한다.

3-3. 예외처리

java에서는 try ~ catch ~ fianlly 구문을 통해 프로그래머가 예외 상황에 대응할 수 있도록 하고 있다.

try{
// 기본적으로 실행되는 부분
} catch( 예외클래스이름 객체이름){
// try블록에서 예외가 발생한 경우 이 곳으로 제어가 넘어온다.
} finally{
// 예외 상황은 발생 여부와 상관 없이 무조건 실행되는 부분
// finally 블록은 생략 가능하다.
}

try 블록 실행 도중 catch에서 명시한 예외 클래스에 해당하는 런타임 에러가 발생하면, try 블록을 즉시 중단하고 catch 블록이 실행된 후, finally블록이 실행된다.

예외가 발생하지 않을 경우에는 try블록 종료 후 fianlly 블록이 실행된다.

profile
메모리폼
post-custom-banner

0개의 댓글