본문 바로가기

Language/Java

Java 기본 문법 Ⅱ - Scanner, 연산자, 조건문

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