프로그램 데이터를 처리하여 결과를 산출하는 것을 연산이라고 한다.
산술 연산자일 경우는 숫자 타입(byte, short, int, long, float, double)으로 결괏값이 나오고, 비교 연산자와 논리 연산자는 논리 타입(boolean)으로 결괏값이 나온다.
1. 연산자 종류
연산자 종류 | 연산자 | 피연산자 수 | 산출값 | 기능 |
산술 | +, -, *, /, % | 이항 | 숫자 |
사칙연산 |
부호 | +, - | 단항 | 숫자 | 음수와 양수의 부호 |
문자열 | + | 이항 | 문자열 | 두 문자열을 연결 |
대입 | =, +=, -=, *=, /=, %= | 이항 | 다양 | 우변의 값을 좌변의 변수에 대입 |
증감 | ++ , -- | |||
비교 | ==, !=, >, <, <=, >= instanceof |
이항 | boolean | 값의 비교 |
논리 | !, &, |, &&, || |
단항 |
boolean | 논리부정, 논리곱 논리합 |
조건 | (조건식)? A : B | 삼항 | 다양 | 조건식에 따라 A 또는 B 중 하나를 선택 |
2. 증감 연산자(++ , --)
package com.kh.calc;
import java.util.Scanner;
public class Calc01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("a를 입력해주세요 :");
int a = scanner.nextInt();
System.out.println("b를 입력해주세요 :");
int b = scanner.nextInt();
System.out.println("c를 입력해주세요 :");
int c = scanner.nextInt();
a++;
b= (--a)+b;
c= (a++)+(--b);
System.out.println(a);
System.out.println(b);
System.out.println(c);
연산식 | 수행 | |
++ | 피연산자 | 다른 연산을 수행하기 전에 피연산자의 값을 1증가시킴 |
-- | 피연산자 | 다른 연산을 수행하기 전에 피연산자의 값을 1감소시킴 |
피연산자 | ++ | 다른 연산을 수행 한 후에 피연산자의 값을 1 증가시킴 |
피연산자 | -- | 다른 연산을 수행 한 후에 피 연산자의 값을 1 감소시킴 |
표를 보면서 값을 생각해보면 출력 값은 이렇게 나온다는 것을 알 수 있다. (a = 5 , b = 10, c = 15 입력)
a를 입력해주세요 :
5
b를 입력해주세요 :
10
c를 입력해주세요 :
15
6
14
19
(만약 system.out.print("a를 입력해 주세요:")라고 출력을 했다면, a를 입력해주세요 : 5 옆으로 출력이 될 것이다.)
package com.kh.calc;
import java.util.Scanner;
public class Calc01 {
public static void main(String[] args) {
int x = 100;
int y = 33;
int z = 0;
x--;
System.out.println(x);
z = x-- + --y;
System.out.println(z);
x = 99 + x++ +x; // 99 + 98 -> 197 + 99 -> 296
System.out.println(x);
y = y-- + y + ++y;
System.out.println(y); // 32 + 31 + 32 -> 95
}
출력 값은 이렇게 나온다는 것을 알 수 있다.
99
131
296
95
(1) 연습문제
package com.kh.operator;
public class F_Compound {
// 복합 대입 연산자
// 다른 연산자와 대입연산자를 함께 사용하는 연산자를 말함
// 산술대입연산자 : +=, -=, *=, /= ,%
// 연산처리 속도가 훨씬 빠르므로 사용 권장
// 증감 연산자(++, --) 와 비슷해 보이지만 증감연산자는 값을 1씩만 증감된다
// 하지만 복합 대입 연산자는 내가 원하는 숫자만큼 증감시킬 수 있다.
public void method( ) {
int num = 12;
System.out.println("num : " + num);
//num을 3증가 시키기
num = num + 3 ;
System.out.println("num + 3 : " + num);
num += 3;
System.out.println("num+= 3 : " + num);
num -= 5;
System.out.println("num -= 5 : " +num);
num *= 6;
System.out.println("num *= 6 : " + num);
num /= 2;
System.out.println("num /= 2 : " + num);
num %= 4;
System.out.println("num %= 4 : " + num);
}
}
3. 논리 연산자
package com.kh.calc;
import java.util.Scanner;
public class Calc01 {
public static void main(String[] args) {
boolean flag = true;
system.out.println(!!!!flag);
}
! 논리 부정이고, 변수 flag가 true값을 입력받았는데!!!! flag로 출력을 하면 true의 값을 얻는다.
구분 | 연산식 | 결과 | 설명 |
AND (논리곱) |
&& |
true true = true |
피연산자가 모두 true일 때 연산결과가 true |
OR |
|| |
true true = true flase true = true true flase = true flase flase = flase |
피연산자 중 하나만 true이면 연산결과는 true |
XOR (배타적 논리합) |
^ | true true = flase true false = true flase true = true false flase = flase |
피연산자가 하나는 true이고 다른하나가 false일 경우에만 연산결과가 true |
NOT |
! | true = false false = true |
피연산자 논리값을 바꿈 |
(1)연습문제
package com.kh.operator;
import java.util.Scanner;
public class E_Logical {
/*
* - 논리 값 두개를 비교하는 연산자
AND : &&(그리고, ~면서)
OR : ||(또는, ~거나)
논리값 && 논리값, 논리값 || 논리값
*/
public void method1() {
// 입력한 정수값이 1~100사이의 숫자인지 확인하기
Scanner sc = new Scanner(System.in);
System.out.println("정수 하나 입력 : ");
int num = sc.nextInt();
//&& : 두개 조건이 모두 true 여야 && 연산의 결과값이 true
// 하나라도 조건이 false가 된다면 && 연산의 결과값은 false
boolean isTrue = (num >= 1) && (num <= 100);
System.out.println("1부터 100사이인지 확인 : " +isTrue);
}
4. 산술 연산
package com.kh.calc;
import java.util.Scanner;
public class Calc02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("첫번째 정수를 입력하세요 : ");
int first = scanner.nextInt();
System.out.println("두번째 정수를 입력하세요 : ");
int second = scanner.nextInt();
System.out.println("더하기 결과 : " + (first+second));
System.out.println("빼기 결과 : " + (first-second));
System.out.println("나누기 결과 : " + (first/second));
System.out.println("나머지 결과 : " + (first%second));
System.out.println("곱하기 결과 : " + (first*second));
}
}
출력을 하면 이렇게 된다는 것을 알 수 있다. (첫 번째 정수 10 입력, 두 번째 정수 5 입력)
첫 번째 정수를 입력하세요 :
10
두 번째 정수를 입력하세요 :
5
더하기 결과 : 15
빼기 결과 : 5
나누기 결과 : 2
나머지 결과 : 0
곱하기 결과 : 50
5. 삼항 연산자
삼항 연사자(?:)는 3개의 피연산자를 필요로 하는 연산자를 말한다.
삼항 연산자는? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도 한다.
int score = 90;
char grade = (score > 80) ? 'A' : 'B' ;
출력 : A
(1) 연습문제
package com.kh.operator;
import java.util.Scanner;
public class G_Triple {
// 항목이 3개 : (조건식) ? 참일 때 사용할 식 : 거짓일 때 사용할 식
// 조건식은 반드시 결과가 true 또는 false 가 나오게 작성
// 비교 / 논리연산자 주로 사용
public void method1() {
// 입력 받은 정수가 홀수인지 짝수인지 판별 후 출력
Scanner sc = new Scanner(System.in);
System.out.println("정수 하나 입력 : ");
int num = sc.nextInt();
String result = (num % 2 == 0) ? "짝수" : "홀수";
System.out.println(num + "은/는" + result + "이다.");
}
(2) 연습문제
public void method2() {
// 입력받은 정수가 양수인지 아닌지 판별 후 출력
Scanner sc = new Scanner(System.in);
System.out.println("정수 하나 입력 : ");
int num = sc.nextInt();
// 삼항 연산자 : 조건식 ? 식1 : 식2 ;
String result = (num>0) ? "양수이다." : "양수가 아니다.";
System.out.println(num + "은/는" + result);
}
(3) 연습문제
public void method3() {
// 삼항 연산자 중첩 사용
// 입력 받은 정수가 양수, 0 , 음수 인지 판별 후 출력
Scanner sc = new Scanner(System.in);
System.out.println("정수 하나 입력 : ");
int num = sc.nextInt() ;
String result = num == 0 ? " 0 " : (num > 0) ? "양수" : "음수";
System.out.println(num + "은/는" + result + "이다.");
}
(4) 연습문제
public void method4() {
// 두 수와 '+' , 또는 '-' 를 입력받아 알맞은 계산 결과 출력하기
// 단, '+' , '-' 이외의 연산자 입력 시 "잘못 입력하셨습니다." 출력
Scanner sc = new Scanner(System.in);
System.out.println("첫 번째 수");
int num1 = sc.nextInt() ;
System.out.println("두 번째 수");
int num2 = sc.nextInt() ;
sc.nextLine();
System.out.println("연산자 입력(+ or -) : " );
char op = sc.nextLine().charAt(0);
String result = (op == '+') ? (num1 + num2 + "") : (op == '-') ? (num1 - num2 + "") : "잘못 입력하셨습니다.";
System.out.println("결과 : " + result);
}
'이공계전문기술연수 > Java' 카테고리의 다른 글
<이공계전문기술연수> 10. Java 조건문 switch문 (0) | 2019.08.11 |
---|---|
< 이공계전문기술연수> 9. Java 조건문 if문 (0) | 2019.08.11 |
< 이공계전문기술연수> 7. Java 변수와 시스템 입출력 / Scanner (0) | 2019.08.07 |
< 이공계전문기술연수> 6. Java 변수(3) 타입변환 (0) | 2019.08.07 |
<이공계전문기술연수> 5. Java 변수(2) 기본타입 (0) | 2019.08.05 |