제어문 : 코드의 흐름을 제어하기 위해, 자연스럽게 흘러가게 하기 위해서 존재
❓자바가 바이트로 번역하는 이유❓
c++을 본따서 만든게 java이다.
c++는 운영체제에 따라서 실행 결과가 다르다.
리눅스 ↔ 윈도우 여기서 돌아가던 코드가 저기서는 돌아가지 않는다.
어디선 돌아가고 어디선 돌아가지 않으면 사용자는 좋아하지 않음
서로 돌아가게 하기 위해서 자바에서 바이너리가 아닌 바이트로 번역
OS가 달라도 동일하게 소스가 돌아간다
단점은 속도가 느리다 (처리과정이 들어가기 때문)
프로그램의 흐름을 제어하는 것
정해진 횟수를 반복 : for문
횟수가 가변일 때 : while문
if문, if-else문, if-else if-else문, switch문
❓ ‘==’로 문자 비교 ❓
그렇게 되면 이 문자열의 참조값(아마도 주소값만 비교한다)만 비교
스펠링 하나 하나를 비교하는게 아니다
문자열 상수의 참조값? 으로 비교하기 때문에 정확하지 않다
그럼 어떻게 해야 돼?
equals를 쓰면 된다!
switch문
switch(비교대상) {
case 1:
실행문;
break; // 블록 빠져나감
case 1:
실행문;
break; // 블록 빠져나감
case 1:
실행문;
break; // 블록 빠져나감
default:
실행문;
}
줄넘기 세는 것과 유사
연필로 써가면서 연습해보기
규칙성을 잘 따져보기
무한 루프
for( ;; ){
실행문;
}
0번 루프
for ( i=0; i<5; i-- ) {
System.out.println("한 번도 실행 안 됨");
}
루프(블록) 안에서 선언한 변수는 밖에서는 사용이 안 된다.
② while
③ do-while
do {
실행문;
} while( 조건 );
④ 기타 제어문
break문
루프나 블록을 빠져나감
continue문
루프를 진행함
다음 루프로 넘어간다
return문
현재 메서드 종료
입력에 사용할 스캐너 장치를 생성
Scanner sc = new Scanner(System.in);
표준 입력을 치면 Scanner가 스캔해준다.
System.in : 표준입력 (키보드)
Scanner는 데이터 타입이다 (int, float, char, String처럼)
타입인데 우리가 만든 클래스가 아니라 api로 제공해주는 것
(근데 클래스 파일은 변수를 만드는게 조금 더 복잡)
(나중에 클래스 배울 때 더 자세히 설명)
변수 옆에 괄호가 있으면 메소드이다.
(main(), scanner() 등등)
메소드는 기능을 제공해주는 친구이다.
java.util.Scanner sc = new java.util.Scanner(System.in);
위 문장은 자바-유틸에 있는 스캐너를 뜻한다.
이렇게 풀네임으로 쓰면 오류가 나지 않는다.
패키지 = 폴더랑 비슷하다고 생각하면 된다.
풀네임을 쓰기엔 귀찮으니 import만 하는 것이다.
① sc.next()
스페이스 치기 전까지 입력을 받아들이는 메소드 (단어만)
② sc.nextInt()
정수 한 개 읽는 메서드
주석 처리
Ctrl + Shift + C