👀20220204 공부기록
📍본 포스팅은 인프런-Do it! 자바 프로그래밍 입문 강의를 바탕으로 작성함을 알립니다.
[무료] Do it! 자바 프로그래밍 입문 - 인프런 | 강의
비전공자, 문과생도 무릎을 ‘탁!’ 치며 이해하는 20년 경력 명강사의 자바 강의!, - 강의 소개 | 인프런...
www.inflearn.com
05. 자바의 여러 가지 연산자 (1)
📍대입 연산자 (assignment operator)
변수에 값을 대입하는 연산자. lvalue에 rvalue를 대입한다. 대입 연산자는 우선 순위가 가장 낮은 연산자이다.
📍증감 연산자 (increment and decrement operator), 관계 연산자 (relational operator)
증감 연산자는 단항 연산자로, 항의 앞/뒤의 위치에 따라 연산의 순서 및 결과가 달라짐에 유의해야 한다.
관계 연산자는 이항 연산자로, 연산의 결과가 true 또는 false로 나온다. (피연산자 사이의 상대적인 크기를 판단하는 연산자) 관계 연산자는 비교 연산자라고 하기도 한다.
package assignment;
public class OperantionEx2 {
public static void main(String[] args) {
//증가 감소 연산자
int num = 10;
System.out.println(num++); //10을 출력한 후에 1을 증가시킴
System.out.println(num); //11
int num2 = 20;
System.out.println(++num2); //1을 증가시킨 후에 출력
System.out.println(num2); //21
//관계 연산자 : 연산의 결과가 true or false
System.out.println(3>5); //false
int numA = 10;
int numB = 5;
boolean flag = (numA > numB); //true
System.out.println(flag);
}
📍논리 연산자 (logical operator)
논리 연산자는 주어진 논리식을 판단하여, true와 false를 결정하는 연산자이다. 연산의 결과가 true, false로 반환 됨.
연산자 | 기능 | 단락 회로 평가 |
&& (논리 곱) | 두 항이 모두 참인 경우에만 결과 값이 참이다. (논리 and 연산) |
앞의 항이 false이면 뒤 항의 결과를 평가하니 않아도 false |
|| (논리 합) | 두 항 중 하나의 항만 참이면 결과 값을 참이다. (논리 or 연산) |
앞의 항의 true이면 뒤 항의 결과를 평가하지 않아도 true |
! (부정) | 단항 연산자이다. 참인 경우는 거짓으로바꾸고, 거짓인 경우는 참으로 바꾼다. (논리 not 연산) |
booleanval = !(5 > 3); //false |
package assignment;
public class OperantorEx3 {
public static void main(String[] args) {
//논리 연산자_단락 회로 평가
int num1 = 10;
int i = 2;
//논리 곱
//앞의 항이 false이기 때문에 뒤의 항은 연산을 하지 않고 false를 출력
boolean value = (((num1 = num1 + 10) < 10) && ((i += 2) < 10));
System.out.println(value); //false
System.out.println(num1); //20
System.out.println(i); //2
int num2 = 20;
int j = 4;
//논리 합
//뒤의 항이 false여도 앞의 항이 true이기 때문에 뒤의 항은 연산을 하지 않고 true출력
boolean value2 = (((num2 = num2 + 10) > 10) || ((j += 2) > 10));
System.out.println(value2); //true
System.out.println(num2); //30
System.out.println(j); //4
int num3 = 20;
int k = 4;
//논리 합
//앞의 항이 false이면 뒤의 항도 확인하기 때문에 뒤의 항도 연산이 된다.
boolean value3 = (((num3 = num3 + 10) < 10) || ((k += 2) < 10));
System.out.println(value3); //true
System.out.println(num3); //30
System.out.println(k); //6
}
}
✖️부호 연산자 : 단항 연산자로 양수/음수의 표현이다. 값의 부호를 결정한다.
✖️산술 연산자 : 사칙연산에 사용되는 연산자이다.
06. 자바의 여러 가지 연산자 (2)
📍복합 대입 연산자
복합 대입 연산자는 대입 연산자와 다른 연산자를 함께 사용한다.
//복합 대입 연산자
int num1 = 10;
System.out.println(num1 += 1); //11
System.out.println(num1 %= 10); //1
num1 -= 1; //num1 = num1 - 1;
System.out.println(num1); //0
📍조건 연산자
조건 식의 결과가 참인 경우와 거짓인 경우에 따라 다른 식이나 결과가 수행됨.
//조건 연산자
int num = (5 > 3)? 10:20;
System.out.println(num); //10
📍비트 연산자
비트 연산자는 노리 연산자와 비슷하지만, bit단위로 논리 연산을 할 때 사용하는 연산자이다. (단, 비트 연산자는 정수에만 사용할 수 있다.)
비트 연산자설명
비트 연산자 | 설명 |
& | 대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산) |
| | 대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산) |
~ | 비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수) |
<< | 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산) |
>> | 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산) |
>>> | 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됨. |
int num1 = 5; //00000101
int num2 = 10; //00001010
int result = num1 & num2; //000000000
System.out.println(result); //0
int result2 = num1 || num2; //00001111
System.out.println(result2); //15
왼쪽 시프트 연산자(<<)는 지정한 수만큼 모든 비트를 전부 왼쪽으로 이동시킨다. 이때 비트의 이동으로 새로 생기는 오른쪽 비트들은 언제나 0으로 채워진다.
오른쪽 시프트 연산자(>>)는 지정한 수만큼 모든 비트를 전부 오른쪽으로 이동시킨다. 이때 비트의 이동으로 새로 생기는 왼쪽 비트들은 양수일 경우에는 모두 0으로 채워지며, 음수일 경우에는 모두 1로 채워진다. 따라서 부호는 변하지 않는다.
int num3 = 5; //00000101
// << left shift연산_ 비트들을 왼쪽으로 이동시킴
System.out.println(num3 <<1); //00001010
//num은 바뀌지 않음
System.out.println(num3); //5
// >> right shift연산
System.out.println(num3 >> 1); //00000010
오른쪽 시프트 연산자(>>>)는 부호 비트까지 포함하여 모든 비트를 전부 오른쪽으로 이동시킨다. 이떄 비트의 이동으로 새로 생기는 왼쪽 비트들은 언제나 0으로 채워진다.
int num4 = 5; //00000101
System.out.println(num4 >>> 1); //00000010
'Language > JAVA' 카테고리의 다른 글
[JAVA] 06일차. 클래스와 객체1 (3), (4) (0) | 2022.02.18 |
---|---|
[JAVA] 05일차. 클래스와 객체1 (1), (2) (0) | 2022.02.11 |
[JAVA] 04일차. 제어 흐름 이해하기 (1), (2) (0) | 2022.02.09 |
[JAVA] 02일차. 변수와 자료형(2), (3) (0) | 2022.02.05 |
[JAVA] 01일차. 변수와 자료형(1) (0) | 2022.02.02 |