3. 자바의 키 입력
1) System.in
: 키보드와 직접 연결되는 표준 입력 스트림 객체로 키 값을 바이트 정보로 바꾸어 제공하는 저수준(low-level) 스트림 객체
-> 키보드 입력을 받기 위해 System.in을 직접 사용하면 키로 부터 읽어온 바이트 정보를 응용 프로그램에서 문자나 숫자로 다시 변환해야 하는 번거로움
-> 사용자가 원하는 타입으로 변환해주는 고수준(high-level) 스트림 클래스인 Scanner 사용을 권장
2) Scanner를 이용한 키 입력
- Scanner 객체는 System.in으로 하여금 키보드로부터 입력을 받게 하고, System.in이 반환하는 바이트 스트림을 문자, 문자열, 정수, 실수 등으로 변환해 리턴한다.
- 사용자가 입력하는 키 값을 공백( '\f', '\r', ' ', '\n')으로 구분되는 토큰 단위로 읽는다.
ex) (입력)"Kim Seoul 20 65.1 true" -> (읽을 때) "Kim", "Seoul", "20", "65.1", "true"
- Scanner 클래스의 주요 메소드
String next() | 다음 토큰을 문자열로 리턴 |
byte nextByte() | 다음 토큰을 byte 타입으로 리턴 |
short nextShort() | 다음 토큰을 short 타입으로 리턴 |
nextInt, Long, Froat, Double, Boolean ... | 다음 토큰을 ...타입으로 리턴 |
String nextLine() | '\n'을 포함하는 한 라인을 읽고 '\n'을 버린 나머지만 문자열로 리턴 |
void close() | Scanner의 사용 종료 |
boolean hasNext() | 현재 입력된 토큰이 있으면 true, 아니면 새로운 입력 때까지 무한정 대기, 새로운입력이 들어올 때, true리턴. ctrl-z 키가 입력되면 입력 끝이므로 false 리턴 |
4. 연산자
1) 자바 연산 종류와 연산자
증감 | ++ -- |
산술 | + - * /(몫) %(나머지) |
시프트 | >> << >>> |
비교 | < > <= >= == != |
비트 | & | ^ ~ |
논리 | && || ! ^ |
조건 | ? : |
대입 | = *= /= += -= &= ^= |= <<= >>= >>>= |
2) 논리 연산자
!a | a의 NOT연산, a가 true이면 false, false이면 true |
a ^ b | a와 b의 XOR연산, a와 b가같으면 false |
a || b | a와 b의 OR연산, a와 b모두 false인 경우만 false |
a && b | a와 b의 AND연산, a와 b모두 true인 경우만 true |
3) 비교 연산자
- 복합적으로 사용 가능
4) 조건 연산
- 세 개의 피연산자로 구성되어 삼항(ternary) 연산자라고도 불림
- 형식 condition ? opr2 : opr3 ;
-> condition이 true면, 전체 식의 값은 opr2, false면 opr3
-> 큰 값을 넣을 때도 사용
5) 비트 연산
- AND, OR, XOR, NOT, 시프트 연산자
- 비트 : 0과 1의 값을 가지는 2진수의 한 자리
-> 8 bit = 1 byte
ex) 10(10진수) → 0000 1010(2진수 8bit 표현)
6) 시프트 연산
a >> b | a의 각 비트를 오른쪽으로 b번 시프트한다. 최상위 비트의 빈자리는 전의 최상의 비트로 채운다. 산술적 오른쪽 시프트 |
a >>> b | a의 각 비트를 오른쪽으로 b번 시프트한다. 그리고 최상위 비트의 빈자리는 0으로 채운다. 논리적 오른쪽 시프트 |
5. 조건문
1) if 문
if ( 조건식 ) {
.... 실행문장…
}
- 한 문장이면 중괄호 생략 가능
- 조건식 : 비교 연산이나 논리 연산이 혼합된 식 -> 결과는 boolean 값
- if-else 문, 중첩 if 문, 중첩 if-else문 가능
- if-else 문은 삼항 연산자로 간단하게 줄일 수 있음
ex) ( a > b )? a-b : b-a ;
2) switch 문
swicth ( 식 ) {
case 값1:
실행문장 1;
break;
case 값2:
…
default: // 생략가능
실행문장 n;
}
- 값에 따라 여러 방향으로 분기하는 경우, if 문 보다 switch 문을 사용하면 가독성이 더 좋을 수 있음
- break; 문이 없으면 break를 만날 때까지 아랫줄 실행
- 값 : 정수 리터럴, 문자 리터럴, 문자열 리터럴 허용, 변수나 식은 허용x
* practice
1) if 문 대신 switch 문을 이용해서 값을 출력하라
- 입력 : true AND false
- 출력 : false
2) 학점 출력
3-1) 커피 주문
3-2) 커피를 10잔 이상 주문시 5% 할인
4) 369 게임
5) 사칙 연산
출처 : Java essential_생능출판
'Language > Java' 카테고리의 다른 글
Java 기본 문법 Ⅲ - 반복문, 배열, 예외 처리 (0) | 2024.08.08 |
---|---|
Java 기본 문법 문제 (1) | 2024.07.09 |
Java 기본 문법 Ⅰ - 식별자, 데이터 타입 (0) | 2024.06.30 |
Java의 특징 (0) | 2024.06.30 |