본문 바로가기

웹 개발/Java

[Web_JAVA] 05

● 연산자

- 기능이 있는 특수문자

 

 

 

● 연산자의 우선순위

- 최우선 연산자

- 단항 연산자

- 산술 연산자

- 쉬프트 연산자

- 관계 연산자

- 논리 연산자

- 삼항 연산자

- 대입 연산자

 

 

 

● 연산자의 결합성

- 하나의 수식에 동일한 연산자가 여러 개 사용되면 알맞은 방향으로 결합되어 연산되는 성질

 

 

 

● 비트 연산

1. 논리 연산자

- & (AND, 논리곱) : A & B, 두 비트 모두 1이면 1

- | (OR, 논리합) : A | B, 두 비트 중 하나라도 1이면 1

- ^ (XOR, 배타논리합) : A ^ B, 두 비트가 서로 다르면 1

 

 

2. 단항 연산자

- ~ (NOT, 논리부정) : ~A, 0을 1로, 1을 0으로 변경, ~a = -a - 1

 

 부호비트

- 비트의 최상위 비트를 부호비트로 사용하고, 0은 양수, 1은 음수를 의미한다.

 

 

3. 쉬프트 연산자

- << (LEFT SHIFT, 좌쉬프트) : A << B, A를 B만큼 좌로 이동

- >> (RIGHT SHIFT, 우쉬프트) : A >> B, A를 B만큼 우로 이동

※ 비트가 넘어가면 잘리고, 빈 칸은 0으로 채워진다.(음수는 1로 채워진다.)

 


 

● 조건식

- 결과가 참 또는 거짓, 둘 중 하나가 나오는 식

- 참 또는 거짓 값

 

 

 

● 참과 거짓 값

- 참 : true

- 거짓 : false

 

 

 

● 논리형

 

 

 

● 조건식에서 사용되는 연산자

1. 관계 연산자

- == : 같다

- != : 같지 않다

- >, < : 초과, 미만

- >=, <= : 이상, 이하

 

2. 논리 연산자

- 두 개 이상의 조건식을 연결해줄 때 사용한다.

- && (AND) : A && B, 두 조건식이 모두 참일 때 참

- || (OR) : A || B, 두 조건식 중 하나라도 참이면 참

 

3. 단항 연산자

- ! (NOT) : !A, 조건식이 참이면 거짓으로, 거짓이면 참으로 변경

 

4. 삼항 연산자

- 조건식 ? 참 : 거짓

(ex) int result = 10 ? 10 > 9 : 10 < 9;

→ 단, 참과 거짓 자리에는 값만 작성할 수 있다.

 

 

 

● 삼항 연산자를 사용하는 이유

- 하나의 조건식의 참, 거짓의 판별을 위해 사용한다.

 

 

 

실습(입력)

1. 한 번에 두 개의 정수를 입력받아 예시와 같이 출력한 후 곱한 값 출력하기

※ 예시

입력 예) 1 2
출력 예) 1 * 2 = 2

 

- 코드

import java.util.Scanner;

public class InputTask {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		String msg = "두 정수를 예시와 같이 입력하세요\n 예)13 24";
		String format = "%d * %d = %d";
		int num1 = 0, num2 = 0, result = 0;
		
		System.out.println(msg);

		// 값을 한 번에 입력 받을 때에는 next~()를 입력받을 값의 수 만큼 써준다.
		num1 = sc.nextInt();  //nextInt() : 사용자가 입력한 정수값
		num2 = sc.nextInt();
		
		result = num1 * num2;  // 입력받은 값을 곱한 결과
		System.out.printf(format, num1, num2, result);  // format = "%d * %d = %d"
		
	}
}
 
결과

 

 

 

 

실습(연산자)

1. 논리 연산자

public class BitOper {
	public static void main(String[] args) {

		System.out.println(10 & 11);
		System.out.println(10 | 11);
		System.out.println(10 ^ 11);
	
	}
}
 
결과

 

 

 

2. 단항 연산자

public class BitOper {
	public static void main(String[] args) {

		System.out.println(~10);  // (-10) - 1
	
	}
}
 
결과

 

 

 

3. 쉬프트 연산자

public class BitOper {
	public static void main(String[] args) {

		System.out.println(10 << 1);  // 1010 << 1 : 0001 0100(20)
		System.out.println(10 >> 1);  // 1010 >> 1 : 0101(5)

	}
}
 
결과

 

 

 

 

실습(조건식에서 사용되는 연산자)

1. 관계 연산자

public class Oper1 { 
	public static void main(String[] args) {

		boolean check = 10 > 9;  // true
		
		System.out.println(10 == 11);
		System.out.println(10 != 11);
		System.out.println(check); 
	
	}
}
 
결과

 

 

 

2. 논리 연산자

public class Oper1 {
	public static void main(String[] args) {

		boolean check = 10 > 9;  // true

		System.out.println(check && 10 == 11);  // true && false (둘 모두 true일 때 true)
		System.out.println(check || 10 == 11);  // true || false (둘 중 하나라도 true일 때 true)
	
	} 
}
 
결과

 

 

 

3. 단항 연산자

public class Oper1 {
	public static void main(String[] args) {

		boolean check = 10 > 9;  // true
		
		System.out.println(check && !(10 == 11));  // true && !(false) → true && true

	} 
}
 
결과

 

 

 

 

실습(삼항 연산자)

1. 사용자에게 키를 입력받고 정수면 정수로 출력, 실수면 실수로 출력하기(삼항 연산자 사용)

※ 예시

183 --> 183 출력
183.5 --> 183.5 출력

 

- 코드

import java.util.Scanner;

public class Oper4 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		
		double height = 0.0;  // 키를 저장하는 변수(double 8byte)
		String msg = "키 >> ";
		String format = "";  // 서식문자를 담아주는 변수
		boolean check = false;  //실수인지 정수인지를 담아주는 변수(boolean lbyte)
		
		System.out.print(msg);
		height = sc.nextDouble();  //사용자에게 실수를 입력받고 height에 담아주기
		check = height - (int)height == 0;  // 실수 - 정수 == 0 이다
		format = check ? "%.0fcm" : "%.1fcm";  // 실수 - 정수 == 0 이면 ? 정수로 출력 : 소수점 첫째자리까지만(실수) 출력
		
		System.out.printf(format, height);
		
	}
}

 

결과(정수)

 

결과(실수)
 

 

 

'웹 개발 > Java' 카테고리의 다른 글

[Web_JAVA] 07  (0) 2022.02.21
[Web_JAVA] 06  (0) 2022.02.20
[Web_JAVA] 04  (0) 2022.02.18
[Web_JAVA] 03  (0) 2022.02.17
[Web_JAVA] 02  (0) 2022.02.16