반응형
연산자 : 연산에 사용되는 표시나 기호
피연산자 : 연산자와 함께 연산되는 데이터
연산식 : 연산 과정 기술
연산자
피연산자 수에 따라 세 종류의 연산자로 구분된다.
1. 단항 연산자 : 부호, 증감 연산자
2. 이항 연산자 : 산술, 비교, 논리 연산자
3. 삼항 연산자 : 조건 연산자
문자열, 부호, 증감, 산술, 비교(관계), 논리, 비트, 대입, 조건(삼항) 연산자가 있다.
- 연산자 종류
연산자 종류 | 연산자 | 기능 |
문자열 | + | 두 문자열 연결 |
부호 | +, - | 음수와 양수의 부호 |
증감 | ++, -- | 1만큼 증가/감소 |
산술 | +, -, *, /, % | 사칙연산 및 나머지 계산 |
비교(관계) | ==, !=, >, <, >=, <=, instanceof | 값의 비교 |
논리 | !, &, |, &&, || | 논리 부정, 논리곱, 논리합 |
비트 | <<, >>, >>> | 비트 단위로 논리 연산할 때 사용 |
대입 | =, +=, -=, *=, /=, %= | 우변의 값을 좌변의 변수에 대입 |
조건 | (조건식) ? A : B | 조건식에 따라 A 또는 B 중 하나 선택 |
- 연산의 방향과 우선순위
단항 연산자의 종류
1. 부호 연산자
+, - 와 같은 부호를 뜻한다.
package kr.or.ddit.study03;
import java.util.Scanner;
public class UnaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
UnaryOperator obj = new UnaryOperator();
// 단항 연산자.
// 1. 부호 연산자
obj.method1();
}
public void method1() {
// 부호 연산자 +, -
int num = 100;
int res = - num;
System.out.println(res);
}
}
2. 증감 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class UnaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
UnaryOperator obj = new UnaryOperator();
// 단항 연산자.
// 2. 증감 연산자
obj.method2();
}
public void method2() {
// 증감 연산자
// ++변수 : 다른 연산을 수행하기 전에 1을 증가 시킴
// 변수++ : 다른 연산을 수행한 후에 1을 증가 시킴
// --변수 : 다른 연산을 수행하기 전에 1을 감소 시킴
// 변수-- : 다른 연산을 수행한 후에 1을 감소 시킴
int val = 10;
int res = ++val;
// val += 1;
// int res = val;
System.out.println("val = " + val);
System.out.println("res = " + res);
val = 10;
res = val++;
// res = val;
// val += 1;
System.out.println("val = " + val);
System.out.println("res = " + res);
val = 10;
res = --val;
System.out.println("val = " + val);
System.out.println("res = " + res);
val = 10;
res = val--;
System.out.println("val = " + val);
System.out.println("res = " + res);
}
}
이항 연산자의 종류
1. 산술 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class BinaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
BinaryOperator obj = new BinaryOperator();
// 이항연산자 : 대부분의 연산자.
// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
// 1. 산술 연산자 +-/*%
obj.method1();
}
public void method1() {
// 사칙연산과 마찬가지로 /, * 먼저 적용됨.
int a = 5;
int b = 3;
System.out.println("덧셈\t" + (a + b) );
System.out.println("뺄셈\t" + (a - b) );
System.out.println("곱셈\t" + (a * b) );
System.out.println("나눗셈\t" + (a / b) ); // 정수형 데이터끼리 나눌 시 나머지가 나오지 않음
System.out.println("나머지\t" + (a % b) );
}
}
2. 관계 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class BinaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
BinaryOperator obj = new BinaryOperator();
// 이항연산자 : 대부분의 연산자.
// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
// 2. 관계연산자
obj.method2();
}
public void method2() {
// >, <, ==(같다), >=, <=, !=(같지 않다)
// 참, 거짓을 나타낼 수 있음
// String grade = "";
// System.out.println("점수를 입력해주세요.");
// int score = sc.nextInt(); // int 값을 바로 받음
// System.out.println("score = "+score);
//
// if(score >= 90) { // 조건에 맞으면 아래 코드를 진행
// System.out.println("A 학점");
// }
// else if(score >= 80) {
// System.out.println("B 학점");
// }
int a = 10;
int b = 10;
int c = 15;
if(a == b) {
System.out.println("같은 값");
}
if(a < c) {
System.out.println("c 값이 a 보다 크다.");
}
if(a <= c) {
System.out.println("c 값이 a 보다 같거나 크다.");
}
}
}
3. 논리 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class BinaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
BinaryOperator obj = new BinaryOperator();
// 이항연산자 : 대부분의 연산자.
// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
// 3. 논리연산자
obj.method3();
// 3. 논리연산자2
obj.method4();
}
public void method3() {
// 논리 연산자 : &&, ||, !
// A&&B A,B 둘다 참이여야 참 (= 곱연산)
// A 1 -> 1 | 0 -> 0 | 1 -> 0 | 0 -> 0
// B 1 | 1 | 0 | 0
// A||B A,B 둘 중 하나라도 참이면 참 (= 합연산)
// A 1 -> 1 | 0 -> 1 | 1 -> 1 | 0 -> 0
// B 1 | 1 | 0 | 0
boolean a = true;
boolean b = false;
System.out.println(a&&!b);
System.out.println(a||b);
}
public void method4() {
// 논리 연산자.
// & | ^ ~
/*
* &(and)
* 45 = 00101101
* 25 = 00011001
* 00001001 => 9
*
* |(or)
* 45 = 00101101
* 25 = 00011001
* 00111101 => 61
*
* ^(xor)
* 45 = 00101101
* 25 = 00011001
* 00110100 => 52
*
* ~(not)
* 45 = 00101101
* 11010010 => 52
*/
int a = 45;
int b = 25;
System.out.println(a&b);
System.out.println(a|b);
System.out.println(a^b);
System.out.println(~a);
}
}
4. 비트 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class BinaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
BinaryOperator obj = new BinaryOperator();
// 이항연산자 : 대부분의 연산자.
// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
// 4. 비트연산자
obj.method5();
}
public void method5() {
// 비트 연산자
// shift operator
// >> << >>>
// 숫자 >> 정수 => 숫자를 정수만큼 오른쪽으로 평행이동
// => 숫자를 2^정수로 나눈 몫이 됨.
// 가장 속도가 빠름.
int i1 = 12;
System.out.println(i1 >> 2);
System.out.println(i1 << 2);
}
}
5. 대입 연산자
package kr.or.ddit.study03;
import java.util.Scanner;
public class BinaryOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
BinaryOperator obj = new BinaryOperator();
// 이항연산자 : 대부분의 연산자.
// 산술 연산자, 관계 연산자, 논리 연산자, 비트 연산자, 대입 연산자
// 5. 대입연산자
obj.method6();
}
public void method6() {
// = : '=' 오른쪽 값을 '=' 왼쪽에 저장 우선 순위가 가장 놎다.
// '=' 과 다른 연산자와 결합
// a = a + b -> a+=b;
// a = a - b -> a-=b;
// a = a * b -> a*=b;
// a = a / b -> a/=b;
// a = a % b -> a%=b;
int a = 10;
int b = 4;
System.out.println("a=a+b -> a+=b : " + (a+=b));
System.out.println("a=a-b -> a-=b : " + (a-=b));
System.out.println("a=a/b -> a/=b : " + (a/=b));
System.out.println("a=a*b -> a*=b : " + (a*=b));
System.out.println("a=a%b -> a%=b : " + (a%=b));
}
}
삼항 연산자의 종류
삼항 연산자란 3개의 피연산자를 필요로 하는 연산을 말한다.
(조건식) ? A : B 로 구성된다.
A는 조건식이 참일 때 진행되며
B는 조건식이 거짓일 때 진행된다.
package kr.or.ddit.study03;
import java.util.Scanner;
public class TrinomialOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
TrinomialOperator obj = new TrinomialOperator();
}
public void method1() {
/*
* 삼항연산자 : 3개의 피연산자를 필요로 하는 연산
* 삼항연산자는 ? 앞의 조건식의 결과에 따라 콜론 앞뒤의
* 피연산자가 선택 조건 연산식이라고도 함.
* 조건식 ? 참일 때의 값 : 거짓일 때의 값
*/
String str = true ? "참" : "거짓";
System.out.println(str);
}
}
- 응용 문제 1
package kr.or.ddit.study03;
import java.util.Scanner;
public class TrinomialOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
TrinomialOperator obj = new TrinomialOperator();
obj.method2();
}
public void method2() {
/*
* 숫자를 1 입력 받으면 더하기
* 나머지 숫자를 입력 받으면 곱하기
*/
int a = 10;
int b = 7;
int select = sc.nextInt();
int result = (select == 1) ? a+b : a*b;
System.out.println(result);
}
}
- 응용 문제 2
package kr.or.ddit.study03;
import java.util.Scanner;
public class TrinomialOperator {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
TrinomialOperator obj = new TrinomialOperator();
obj.method3();
}
public void method3() {
/*
* 나이를 입력 받아서
* 18세 이상이면 성년 아닐 경우 미성년을 출력 할 것.
*/
System.out.print("나이 : ");
int age = sc.nextInt();
String result = (age >= 18) ? "성년" : "미성년";
System.out.println(result + "입니다.");
}
}
반응형
'자바' 카테고리의 다른 글
[Java 초급] 5.5.2장 테스트2 (2) | 2023.12.07 |
---|---|
[Java 초급] 5.5.1장 테스트 (0) | 2023.12.06 |
[Java 초급] 4.5장 테스트 (2) | 2023.12.06 |
[Java 초급] 4장 Scanner 이용과 타입 변환 (0) | 2023.12.05 |
[Java 초급] 3.5장 테스트 (0) | 2023.12.05 |