공대생의 개발 일기장

ch04 조건문과 반복문 본문

Java 공부

ch04 조건문과 반복문

SeoKyung 2023. 2. 19. 03:06

https://github.com/SeoKyung0221/Java-study

 

GitHub - SeoKyung0221/Java-study

Contribute to SeoKyung0221/Java-study development by creating an account on GitHub.

github.com

조건문과 반복문 파트는 정말로 C++과 그냥 똑같았다. 몇가지 자바에서만 추가적인 기능이랑 새로운 메서드만 익혔기 때문에 실제로 학습기간은 하루정도 걸렸다.

 

근데 왜 ch03 이후 텀이 길었느냐! 하루 공부에 CS공부도 추가했는데 자꾸 일한답시고 피곤해서 잠에 드니 CS 네트워크 파트만 공부하고 자버려서 자바 공부를 잠시 못하게 되었었다. CS 네트워크 파트를 공부한 부분은 추후에 업로드 하겠다. 업로드하기가 지금 블로그에는 내가 전혀 숙지하지 못한 사실을 기입하고 있는데 CS는 그냥 다 모르는 내용이라 책 내용을 복사 붙여넣기 급이라서 시간 낭비같고 애매해서 내비두는 중이다. 나름대로 감이 잡히면 포스팅하겠다.

 

깃허브에 예제와 연습문제는 이미 올라가 있고 여기서는 새롭게 배운 자바에서의 추가적인 기능과 메서드만 기술하겠다.

 

1. switch문의 제약 조건

- switch문의 조건식 결과는 정수 또는 문자열이어야 한다.

- case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다. -> 문자, 문자열 리터럴은 가능! 변수는 X

 

2. Math.random()

- 0.0 <= Math.random() < 1.0 의 랜덤 double 값을 반환한다.  double형임을 반드시 명심하자! 정수형을 원하면 앞에 (int)를 통해 형변환을 거쳐야 한다.

 

3. str.charAt(int i)

- 문자열 str의 i+1번째 문자를 반환하는 메서드이다. 예를 들어서 str = "yes"이면 str.charAt(0)이면 "y", str.charAt(1)이면 "e", str.charAt(2)이면 "s"이다. 또, 연습문제 상에 "12345"와 같은 숫자 문자열의 각 자리 수를 반환할 때가 있는데 이때는 아스키코드 상의 '0'을 빼주면 된다. 예를 들어 (str = "12345") str.charAt(0) - '0' 을 하면 문자열 '1'이 아닌 정수 1을 구할 수 있다.

 

4. 향상된 for문

- for ( 타입 변수명 : 배열 또는 컬렉션) { } 이 처음 보는 for문이었다.

int [] arr = {10, 20, 30, 40, 50} // 이것도 원래 C++에서는 int arr[]로 초기화했던 것 같은데..?
								  // 자바는 다른가보다!
                                  
for(int i=0; i < arr.length; i++){ // 원래는 이렇게 코드를 작성.
	System.out.println(arr[i]);
}

for(int tmp : arr){ // 향상된 for문, tmp에 매 반복마다 하나씩 순서대로 읽혀서 변수에 저장된다.
	System.out.println(tmp);
}

다음과 같은 코드로 작성해서 사용하는데 다만 일반적인 for문과 달리 배열이나 컬렉션에 저장된 요소들을 읽어오는 용도로만 사용하는 제약이 있다.

 

5. for문의 무한 루프

- for(;;), for(int i=0; true; i++) 로 for문도 while문이 아니여도 충분히 무한 루프가 가능하다.

 

6. 이름이 붙은 반복문

- 이게 정말 놀라운게 사실 C++에서는 반복문을 빠져나올 때 예외 처리를 꽤나 자주했었다. 그냥 내가 못했던 것도 맞는데 throw나 catch? 같은 메서드를 사용했는데 정말 엄청나게 에러가 떴던 기억이 있다. 근데 여기서는 거의 혁신! 반복문 자체에 이름을 붙여서 그 이름의 반복문을 탈출하는 시스템이 있다니! C++에도 있었는데 내가 몰랐었던건가 싶을 정도로 편리한 기능이었다. (아마 진짜 몰랐을 수도 있다. 공부를 별로 안해서)

Loop1 : for(int i=2; i<=9; i++){ // for문의 이름은 Loop1이다.
	for(int j=0; j<=10; j++){
    	break Loop1; // Loop1의 이름을 가진 반복문을 탈출한다! 물론 continue도 가능!
        }
}

 

7. Scanner 클래스

2장에서 미리 소개되었었는데 앞으로 자주 쓰일 것 같은 문법이라서 아예 외우는 겸 정리한다.

import java.util.*; // Scanner 클래스를 사용하기 위해 추가
// public class 부분 생략

Scanner scanner = new Scanner(System.in); 
int input = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 input에 저장.

// 혹은

String regNo = scanner.nextLine(); // 화면을 통해 입력받은 문자열을 저장.
int score = Integer.parseInt(regNo); // 입력받은 문자열을 숫자로 변환.

 

'Java 공부' 카테고리의 다른 글

ch06 객체지향프로그래밍1  (0) 2023.03.12
ch05 배열  (0) 2023.02.26
ch03 연산자 - 연습문제 풀이  (0) 2023.02.08
ch03 연산자 - 복습 및 정리  (0) 2023.02.08
ch03 연산자 - github  (0) 2023.02.08