부호 연산자
- 양수, 음수를 표시하는 +, - 기호를 사용한다
byte b = 5;
byte result = -b; //컴파일 에러
byte b = 5;
int result = -b;
에러 내용 : Type mismatch: cannot convert from int to byte (int를 byte로 바꿀 수 없다.)
해결법 : - b 는 int 타입이므로 int에 저장해야한다.
증감 연산자
- 전위 수식 : 다른 연산자와 함께 사용될 때 다른 연산을 수행하기 전에 처리한다.
- 후위 수식 : 다른 연산자와 함께 사용될 때 다른 연산을 수행한 후에 처리한다.
** x = 20 일때 다음 예제를 풀어보자
① 후위 연산자이므로 20 + 5 = 25 를 먼저 해준다.
② x = 20 - 1 =19 가 된다.
③ 전위 연산자이므로 x = 19 - 1 = 18 을 먼저 해준다.
④ y = 25 +18
⑤ = 43 이 된다.
** 증감 연산자 예제
int x = 10;
int y = 10;
int z;
System.out.println("--------------------");
x++;
++x;
System.out.printf("x= %d\n", x); // x = 12
System.out.println("--------------------");
y--;
--y;
System.out.printf("y= %d\n", y); // y = 8
System.out.println("--------------------");
z = x++;
System.out.printf("z= %d\n", z); // z = 12
System.out.printf("x= %d\n", x); // x = 13
System.out.println("--------------------");
z = ++x;
System.out.printf("z= %d\n", z); // z = 14
System.out.printf("x= %d\n", x); // x = 14
System.out.println("--------------------");
z = ++x + y++;
System.out.printf("z= %d\n", z); // z = 15 + 8 = 23
System.out.printf("x= %d\n", x); // x = 15
System.out.printf("y= %d\n", y); // y = 9
논리 부정 연산자
- ' ! ' 부호를 사용하며 true를 false로 , false를 true로 상태를 바꿔준다.
- boolean 타입에서만 쓸 수 있다.
** 논리 부정 연산자 예제
boolean play = true;
System.out.println(play);
play = !play;
System.out.println(play);
산술 연산자
- 사칙연산(+ - × ÷ ) 을 하기 위한 연산자이다.
- 실제로는 ( + - * / ) 를 사용한다.
- 나눗셈 결과 나머지를 추출해내는 % 도 알아두자
** 산술 연산자 예제
int v1 = 5;
int v2 = 2;
int result1 = v1 + v2;
System.out.println("result1=" + result1); // 7
int result2 = v1 - v2;
System.out.println("result2=" + result2); // 3
int result3 = v1 * v2;
System.out.println("result3=" + result3); // 10
int result4 = v1 / v2;
System.out.println("result4=" + result4); // 2
int result5 = v1 % v2;
System.out.println("result5=" + result5); // 1
double result6 = (double) v1 / v2;
System.out.println("result6=" + result6); //2.5
비교 연산자
- < <= > >= == != 이용하여 피연산자의 대소 및 동등을 비교한다
- 주로 If문과 For문, While문에서 흐름을 제어할 때 사용된다.
** 비교연산자 예제
int num1 = 10;
int num2 = 10;
boolean result1 = (num1 == num2);
boolean result2 = (num1 != num2);
boolean result3 = (num1 <= num2);
System.out.println("result1=" + result1); //true
System.out.println("result2=" + result2); //false
System.out.println("result3=" + result3); //true
char char1 = 'A';
char char2 = 'B';
boolean result4 = (char1 < char2);
System.out.println("result4 =" + result4); //true
System.out.printf("result4 = %b\n", char1 < char2); //true
** 불이야! 게임 예제
int count = 10;
while(count != 0) {
Thread.sleep(500);
System.out.println(count--);
}
System.out.println("fire!!!");
- Tread.sleep(1000); => 스레드가 1초 동안 일시정지 상태가 됨
- Tread.sleep(1000); => 0.5초 ..
== 사용시 주의할 점
- 연산식 0.1 == 0.1f -> false
- 이유는 0.1f 는 사실 0.10000000149011612 이다. 이를 근삿값으로 표현해준 것이다.
- 따라서 == 을 사용하게되면 완전히 같아야지만 true 가 뜨기 때문에 이 경우는 false.
** "==" 사용 예제
int a1 = 1;
double a2 = 1.0;
System.out.println(a1 == a2); //true
double a3 = 0.1;
float a4 = 0.1f;
System.out.println(a3 == a4); //false
System.out.println((float)a3 == a4); //true
문자열 비교할땐 equlas() 메소드 사용
String strVar1 = "사과";
String strVar2 = "사과";
System.out.println(strVar1 == strVar2); // 이렇게 사용하지않음
System.out.println(strVar1.equals(strVar2)); //true
- String은 참조타입이므로 문자열을 비교할 때 ==, != 을 사용하지않는다. ( Chapter 5 에서 다룰 예정 )
논리 연산자
int charCode = 'A';
if ((charCode>=65) & (charCode<=90)) {
System.out.println("대문자군요");
}
if ((charCode>=97) && (charCode<=122)) {
System.out.println("소문자군요");
}
if (!(charCode<48) && !(charCode>57)) {
System.out.println("0~9 숫자군요");
}
대문자군요
int value = 6;
if ((value%2==0) | (value%3==0)) {
System.out.println("2 또는 3의 배수군요");
}
if ((value%2==0) || (value%3==0)) {
System.out.println("2 또는 3의 배수군요");
}
2 또는 3의 배수군요
- | 와 || 는 같은 의미이다
LogicalOperatorExample 예제 변형
// 문제 변형 : 문자를 입력받아서 할것
int str;
System.out.println("하나의 문자를 입력하시오 = ");
str = (int)System.in.read();
System.out.println(str);
if ((str>=65) & (str<=90)) {
System.out.println("대문자군요");
}
if ((str>=97) && (str<=122)) {
System.out.println("소문자군요");
}
if (!(str<48) && !(str>57)) {
System.out.println("0~9 숫자군요");
}
int value = 6;
if ((value%2==0) | (value%3==0)) {
System.out.println("2 또는 3의 배수군요");
}
if ((value%2==0) || (value%3==0)) {
System.out.println("2 또는 3의 배수군요");
}
대입 연산자
int result = 0;
result += 10;
System.out.println("result=" + result); // 10
result -= 5;
System.out.println("result=" + result); // 5
result *= 3;
System.out.println("result=" + result); //15
result /= 5;
System.out.println("result=" + result); //3
result %= 3;
System.out.println("result=" + result); //0
삼항 연산자
int score = 85;
char grade = (score > 90) ? 'A' : ((score > 80) ? 'B' : 'C');
System.out.printf("%d점은 %c등급입니다.\n",score, grade);
비트 연산자
/****************************************
* 비트연산자( |, &, ^, ~, <<, >> )
*
*
* or and xor
* x y x | y x & y x ^ y
* **************************************
* 1 1 1 1 0
* 1 0 1 0 1
* 0 1 1 0 1
* 0 0 0 0 0
*/
int a = 9;
int b = 11;
String str = "71";
int num = Integer.parseInt(str);
System.out.println(num); //71
// 1001 -> 9
// 1011 -> 11
// & 연산시 1001 -> 9
// || 연산시 1011 -> 11
System.out.println(Integer.toBinaryString(a)); //1001
System.out.println(Integer.toBinaryString(b)); //1011
System.out.println("10진수: " + (a & b)); //9
System.out.println("10진수: " + (a | b)); //11
// &&, || 와 다른점은 비트끼리 비교연산이 가능하다는 점이다.
System.out.println("3<<2: " + (3<<2)); //12
// 0011 -> 1100 (비트를 왼쪽으로 2 칸 이동)
System.out.println("128>>5: " + (128>>5)); //4
// 1000 0000 -> 0000 0100 (비트를 오른쪽으로 5 칸 이동)
** and 와 or 조건 사용시 주의할 점
- 조건① && 조건② 에서 조건①이 false면 뒤에껀 볼 필요도 없이 전체 식이 false가 되므로 그 구문을 바로 빠져나오기 때문에 조건2는 연산이 이뤄지지않는다.
- 조건① || 조건② 에서 조건①이 true면 식 전체가 true이되므로 그 구문을 바로 빠져나오기 때문에 조건2는 연산이 이뤄지지않는다.
int num1 = 0, num2 = 0;
boolean result;
result = ((num1 += 10) < 0 && (num2 += 10) > 0); //and 조건
System.out.printf("num1=%d, num2=%d\n",num1,num2); // num1 = 10, num2= 0
result = ((num1 += 10) > 0 || (num2 += 10) > 0); //or 조건
System.out.printf("num1=%d, num2=%d\n",num1,num2); // num1 = 20, num2= 0
'👨💻 2. 웹개발_Back end > 2-1 Java' 카테고리의 다른 글
[JAVA] 04-2 반복문 (for문, while문, do-while문) (0) | 2021.07.27 |
---|---|
[JAVA] 04-1 조건문 (if문, switch문) (0) | 2021.07.27 |
[JAVA] 03-1 연산자와 연산식 (0) | 2021.07.23 |
[JAVA] 02-4 변수와 시스템 입출력 (0) | 2021.07.23 |
[JAVA] 02-3 타입변환 (0) | 2021.07.21 |
댓글