1. 산술 연산자
이항연산자로서 연산방법, 우선순위가 일반 수학산술과 동일하다.
종류로는 +, -, *, /, %(모듈러, Modular)가 있다.
% : 모듈러 (Modular) => 나눗셈에서의 나머지를 구함
public void method1() {
int num1 = 10;
int num2 = 3;
System.out.println("num1 : " + num1 + "\nnum2 : "+ num2);// 10, 3
System.out.println("num1 + num2 : " + (num1 + num2));// 13
// (num1 + num2) 괄호로 묶어줘야 13이라는 결과값이 나옴!
// 만약에 묶지않고 출력하면 String(문자열)로 인식이 되기때문에 "10" + "3"결과값 103이 찍힘!
System.out.println("num1 - num2 : " + (num1 - num2));// 7
// 뺄셈의 경우 괄호로 묶지 않으면
// 문자열과 num1을 하난로 묶어서 새로운 문자열을 만들기 때문에 오류가 발생!
// 곱하기 나누기 연산 실행하고 결과 확인해보기!
System.out.println("num1 * num2 : " + (num1 * num2));// 30
System.out.println("num1 / num2 : " + (num1 / num2));// 3
System.out.println("num1 % num2 : " + (num1 % num2));// 1
// *, / % 우선순위가 +, - 보다 높기 때문에 묶지 않아도 먼저 연산이 됨
// 단, 가독성을 위해 괄호를 사용하는 것을 권장.
// 특이케이스!
System.out.println(5/0); //Error!
System.out.println(5%0); //Error!
System.out.println(5.0/0); //Infinity 무한대 발생!
// 정수를 0으로 나눌수는 없다!
// ArithmeticException : / by zero 오류가 발생!!
2. 증감 연산자
단항연산자로서 한번에 1씩 증가(더하거나) 하거나 감소(빼거나) 하는 연산을 한다.
=> 먼저 증감을 할건지, 나중에 증감을 할건지 연산자의 위치에 따라 달라진다.
[표현법]
- ++ : 값을 1씩만 증가시키는 연산자
- -- : 값을 1씩만 감소키니는 연산자
연산자의 위치
- 후위 연산 : 값++, 값-- => 값을 먼저 처리하고 나서 증가하거나 감소하겠다.
//후위연산
public void method1() {
int num = 10;
System.out.println("num : " + num); //10
num++; // num 변수의 값에다가 1을 증가시키겠다. ☆처리★
//num + 1
System.out.println("☆처리★ num : " + num); //11
num--;
System.out.println("num : " + num); //10
System.out.println("num : " + num++); //10
System.out.println("num : " + num); //11
}
public void method2(){
int a = 10;
int b = a++;
System.out.println("a : " + a); //11
System.out.println("b : " + b); //10
// b라는 변수에 a값을 먼저 대입하고 (선 처리 부분)
// a라는 값을 증가 시킨다. ( 후 연산 )
int c = 20;
int d = c--;
System.out.println("c : " + c); //19
System.out.println("c : " + d); //20
}
public void method3( ) {
//후위연산자
int num1 = 20;
int result = num1++*3;// num1의 값 20과 3을 먼저 곱해서 result에 대입 시켜준 다음
// 개행값에 1을 더한다.
System.out.println(result);//60
System.out.println(num1);//21
}
- 전위 연산 : ++값, --값 => 먼저 값을 증감하고 그 값을 처리
public void method4() {
int a = 10;
int b = ++a; // b에는 11(선 연산)이 들어감 (후 처리)
System.out.println("a : " + a); //11
System.out.println("b : " + b); //11
System.out.println("a : " + --a); //10
}
3. 복합 대입 연산자
"=" 대입연산자
다른 산술 연산자랑 대입연산자가 결합한것. 이항연산자
⇒ 자기 자신과 해당 산술연산 후에 그 결과를 자기자신한테 덮어씌우는 것
- +=
- -=
- *=
- /=
- %=
int a = 1;
a += 3;// 기존에 a라는 값에 3을 더하고 그 결과 값을 a에 다시 대입하겟다.
a = a + 3; //a += 3;와 같은 코드
public void method1() {
int num = 12;
System.out.println("현재 num : " + num);//12
// num을 3 증가시키기
num = num +3;
System.out.println("3을 증가시킨 num : " + num);//15
// num을 3 증가시키기
num += 3;
System.out.println("3을 증가시킨 num : " + num);//18
// num을 3 감소시키기
num -= 3;
System.out.println("3을 감소시킨 num : " + num);//13
// num을 3배 증가시키기
num *= 3;
System.out.println("3배 증가시킨 num : " + num);//45
// num을 2배 감소시키기
num /= 2;
System.out.println("2배 감소시킨 num : " + num);//22
// num을 2로 나눈 나머지를 num에 대입
num %= 2;
System.out.println("num에 2로 나눈 나머지를 대입한 값 : " + num); //0
}
4. 논리 부정 연산자
논리값 (true/false)을 반대로 바꿔주는 연산
[표현법] !논리값
public void method() {
System.out.println("true의 부정 : " + !true); //false
System.out.println("flase의 부정 : " + !false); //true
boolean b1 = true;
boolean b2 = !b1;
System.out.println("b1 : " + b1); // true
System.out.println("b2 : " + b2); // false
}
}
5. 비교 연산자(관계연산자)
두개의 값을 가지고 비교, 이항연산자
비교연산을 한 결과 => 참일 경우 true, 거짓일 경우 false
특정 조건을 제시할 수 있는 조건문에서 쓰일 예정
종류
- a < b : a가 b보다 작습니까?
- a > b : a가 b보다 큽니까?
- a <= b : a가 b보다 작거나 같습니까?
- a >= b : a가 b보다 크거나 같습니까?
일치함을 비교 : 동등비교
- a == b : a와 b가 일치합니까?
- a != b : a와 b가 일치하지 않습니까?
⇒ 피연산자는 숫자, 결과값은 논리값
public void method() {
int a = 10;
int b = 25;
System.out.println("a > b : " + (a < b )); //true
System.out.println("a <= b : " + (a <= b)); // true
System.out.println("25 <= b : " + (25 <= b)); // true
boolean result1 = (a == b);
System.out.println("result1 : " + result1); //false
boolean result2 = (a != b);
System.out.println("result2 : " + result2); //true
System.out.println("a - b < 0 :" + (a - b < 0)); //true
System.out.println("a가 짝수입니까? : " + (a % 2 == 0)); //true
System.out.println("b가 짝수입니까? : " + (b % 2 == 0)); //false
}
}
6. 논리 연산자
이항 연산자, 두개의 논리값을 연산하는 연산자
[표현법] 논리값 논리연산자 논리값 => 결과값도 논리값
종류
- AND 연산자 : 논리값 && 논리값좌항과 우항의 값이 모두 true여야만 최종 결과가 true
- OR 연산자 : 논리값 || 논리값좌항 또는 우항의 값중 하나라도 true이면 최종 결과가 true
AND
// AND
public void method1() {
// 사용자가 입력한 정수값이 양수 "이면서(이고)" 짝수인지 확인
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int num = sc.nextInt();
boolean result = (num > 0) && (num % 2 == 0);
// &&의 의미 : ~~ 이면서, ~~이고, 그리고
System.out.println("정수가 양수이면서 짝수 입니까? : " + result);
}
public void method2() {
// 입력한 정수값이 1이상 100이하인지 확인
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int num = sc.nextInt();
// 1 <= num <= 100
//num이 1보다 크거나 같고 "그리고" 100보다 작거나 같습니까?
boolean result = (1 <= num) && (num <= 100);
System.out.println("정수가 1 이상 100이하 입니까 ? : " + result);
}
OR
//OR
public void method3() {
// 사용자가 입력한 값이 A 인지 a 인지 확인
Scanner sc = new Scanner(System.in);
System.out.print("알파벳 입력 : ");
char gender = sc.nextLine().charAt(0);
// 문자의 경우 비교연산이 가능한가? => 왜?? int로 자동형변환이 되기 때문 (int)
boolean result = (gender == 'A') || (gender == 'a');
// || : ~~이거나, 또는
System.out.println("알파벳 a또는 A입니까? : " + result);
}
&&
두개의 조건이 모두 true일 때 결과가 true
- true && true => true
- true && false => false
- false && true => false
- false && false => false
||
두개의 조건중 하나라도 true이면 결과가 true
- true || true => true
- true || false => true
- false || true => true
- false || false => false
번외) deadcode
public void method4() {
int num = 10;
boolean result1 = false && (num > 0);
// deadcode : 뒤의 비교연산 구문이 실행되지 않음.
// 실행오류는 나지 않지만 굳이 결과값을 false일텐데 왜 쓰지?
System.out.println("result1 : " + result1); //false
}
'*JAVA*' 카테고리의 다른 글
[java] 조건문 - if문 (0) | 2021.10.19 |
---|---|
[java] 연산자 - 삼항연산자 (0) | 2021.10.19 |
[java] Scanner (0) | 2021.10.19 |
[java] 출력문 (0) | 2021.10.19 |
[java] 변수 - 형변환(Type Casting) (0) | 2021.10.19 |