<JAVA 연산자>
1. 단항 연산자
1) 전위 연산: 먼저 연산 후 다른 연산 실행 (++)
int a = 10;
int b = ++a;
System.out.println(a + ", " + b); //결과: 11, 11
2) 후위 연산: 다른 연산 우선 실행 후 연산
int a = 10;
int b = a++;
System.out.println(a + ", " + b); 결과: 11, 10
** 예시1
: d는 후위연산자(--)로 인해 g값 계산할 때는 2로 연산되지만 1이 담긴다.
int b = 10;
int d = 2;
int g = (--b) + (d--); //9 + 2(1) = 11
System.out.println("b = " + b); //9
System.out.println("d = " + d); //1
System.out.println("g = " + g); //11
**예시2
: 아래와 같이 하나하나 써보면서 해야 틀리지 않게 할 수 있다!!
안그러면 되게 헷갈린다...
나는 저렇게 모든 걸 적으면서 하지 않았는데 덕분에 하나가 꼬여서 계속 오답을 냈다...ㅠㅠ
public void method3() {
int a = 5;
int b = 10;
int c = (++a) + b; //a:6 b:10 c:16
int d = c / a; //a:6 b:10 c:16 d:2
int e = c % a; //a:6 b:10 c:16 d:2 e:4
int f = e++; //a:6 b:10 c:16 d:2 e:4(5) f:4
int g = (--b) + (d--); //a:6 b:9 c:16 d:2(1) e:4(5) f:4 g:11
int h = 2; //a:6 b:9 c:16 d:1 e:5 f:4 g:11 h:2
int i = a++ + b / (--c / f) * (g-- - d) % (++e + h);
//= 6 + 9/ (15 / 4) * (11 - 1) % (6 + 2)
//= 6 + 9/ 3 * 10 % 8
//= 6 + 3 * 10 % 8
//= 6 + 30 % 8
//= 6 + 6
//= 12
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
System.out.println(h);
System.out.println(i);
4) 논리 부정 연산자: !
boolean bool1 = true;
boolean bool2 = !bool1;
System.out.println(bool2); //false
5) 비트연산자 : ~
이진수 값 반전시킨다.
0 -> 1 / 1-> 0 으로 반전시킴
2. 산술연산자
double a = 35;
double b = 10;
double sum = a + b;
System.out.println("a + b = " + sum); //45.0 -->double이라서
double mul = a * b;
System.out.println("a * b = " + mul); //350.0 --> double이라서
double div = a / b;
System.out.println("a / b = " + div); //3.5
int mul = a * b // ==> 350
double mul = a / b // ==> 350.0
3. 논리 연산자
1) && : 두 연산자가 모두 true일 때 true 반환 (AND)
2) || : 두 피연산자 중 모두 하나만 true여도 true 반환 (OR)
1. Boolean result = 1 <= num <=100; ==> 안됨
Scanner sc = new Scanner(System.in);
System.out.println("정수하나입력 : ");
int num = sc.nextInt();
boolean result;
//사용자가 입력한 num값이 1이상이고 100이하의 값인 가요?
//result = (1 <= num <=100); 안됨
result = (num >= 1) && (num <= 100);
System.out.println("사용자가 입력한 num값이 1이상이고 100이하의 값인 가요?" + result);
2. 사용자 입력 문자 --> 대문자인지 확인
boolean result = (ch >= 'A') && (ch <= 'Z');
System.out.println("문자하나입력 : ");
char ch = sc.next().charAt(0); //character는 .charAt(0)으로 해준다.
boolean result = (ch >= 'A') && (ch <= 'Z'); //문자같은 경우는 숫자값(유니코드)이기 때문에 대소비교 가능
System.out.println("사용자가 입력한 문자가 영어 대문자입니까? " + result);
3.
** short cut연산
1) a && b 에서 앞에 값(a)이 false이면 b값이 true인지 false인지 상관없이 false이므로
-> b값은 연산하지 않기때문에 b값은 추정 불가능하다.
int num = 10;
System.out.println("&& 연산전의 num값 : " + num); //10
boolean result1 = (num < 5) && (++num > 0); //앞이 false이므로 뒤연산(++num)은 수행X
System.out.println("result1 : " + result1); //false
System.out.println("&& 연산후의 num값 : " + num); //10
int num = 10;
boolean result1 = (num < 5) && (++num > 0);
--> (num<5) 가 true이므로 뒤에 있는 조건인 (++num > 0) 는 실행되지 않는다.
2) a || b 에서 앞에값인 a가 true이면 b는 검사하지 않음
-> b의 값을 추정 불가능하다.
int num = 10;
boolean result2 = (num < 20) || (++num > 0); //(num < 20) -> true -> (++num > 0) 수행 X
System.out.println("result2 : " + result2);
System.out.println("|| 연산후의 num값 : " + num); //num: 10
// ||연산자를 기준으로 앞에 이미 true가 제시되어있기 때문에 뒤쪽 연산은 수행하지 않는다.
4. 삼항 연산자
if문같이 사용할 수 있고 한줄로 간략하게 사용가능
1) int형으로 결과 받음
// 조건식 ? 식1 : 식2; //참일 경우 식1, 거짓일 경우 식2 실행, 중첩해서 사용가능
/* 조건식 --> 반드시 true 또는 false
* 조건식 --> 주로 비교, 논리 연산자가 사용된다.
*/
int result1 = a < b ? a++ : (b == 0 ? a-- : b++);
→ int 변수명 = 조건식 ? 참일경우 실행할 식 : 거짓일 경우 실행할 식;
2) boolean으로 결과 받음
boolean isTrue = (num1 == num2) && (num2 == num3);
System.out.println(isTrue);
→ boolean 변수명 = 조건식;
**예시 (중첩 삼항연산자 & 자료형 변환)
: 두 수를 입력받고 , + 또는 -를 입력받아서 알맞은 계산결과를 출력하기
(단, + 또는 - 이외의 다른 문자를 입력하는 경우에는 "잘못 입력하였습니다." 출력)
Scanner sc = new Scanner(System.in);
System.out.println("정수1 입력: ");
int num1 = sc.nextInt();
System.out.println("정수2 입력: ");
int num2 = sc.nextInt();
sc.nextLine(); //버퍼 제거
System.out.println("연산자 입력(+ 또는 -) : ");
char op = sc.nextLine().charAt(0);
String result = op =='+' ? String.valueOf(num1+num2) : ((op=='-') ? num1-num2+"" : "잘못 입력하였습니다.");
//int형 --> string 전환 하는 2가지 방법
/* String.valueof(정수)
* 정수 + ""
* */
System.out.println("결과" + result);
▶ int형 → string 전환
1) String.valueOf(정수)
2) 정수 + ""
출처: KH정보교육원 기초동영상
'Java > 정리' 카테고리의 다른 글
9회차_반복문(do ~ while문) (0) | 2021.04.19 |
---|---|
7회차_제어문(switch문_return/break 차이) (0) | 2021.04.19 |
3회차_상수 & 데이터 오버플로우 & 형변환 (0) | 2021.04.10 |
2회차_출력메소드(printf) (0) | 2021.04.10 |
1회차_클래스 import, println단축키 (0) | 2021.04.10 |