* Operator(연산자)
- 연산에 사용되는 예약된 부호들.
- 연산자에는 우선순위가 존재.
- 문자열은 연산되지 않는다. ("10" - 문자열의 10, 10 - 정수의 10)
* 연산자의 우선순위
← 먼저 연산 / 나중 연산 →
논
최 단 산 쉬 관 리 삼 대 콤 마
우 항 술 프 계 항 입 지
선 트 막
1. 최우선 : ()
2. 단항: ~, !, +, -, ++, --
3. 산술: +, -, *, /, %
4. 쉬프트: <<, >>, >>>
5. 관계: >, <, >=, <=, ==, !=
6. 논리: 일반 논리(&&, ||), 비트 논리(&, |, ^)
7. 삼항(조건): ? :
8. 대입: =, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, |=, ^=
* Radix (진수)
- 서로 다른 모양의 숫자 몇 개를 가지고 모든 수를 표현.
- 코딩 창에는 10진수, 8진수, 16진수를 모두 사용할 수 있다.
- 10진수: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...
- 8진수: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, ...
- 16진수: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, 12, 13, 14, 15, ...
- 2진수: 0, 1, ...
* 코딩 창에서 진수를 사용하는 법)
- 10진수(Decimal): 숫자
- 8진수(Octal): 0숫자
- 16진수(Hex): 0x숫자
- 2진수(Binary)
- 컴퓨터에서의 저장단위: byte


- byte 하나로 값 저장(byte, boolean)
| 0000 0000 |
- byte 두 개로 값 저장(short, char)
| 0000 0000 | 0000 0000 |
- byte 네 개로 값 저장(int, float)
| 0000 0000 | 0000 0000 | 0000 0000 | 0000 0000 |
- bit가 0이면 값이 아님, bit가 1이면 값
| 0000 0000 |
최상위 부호 비트(sign bit) - 양수인지 음수인지?
0 - 양수 / 1 - 음수
* 각 bit는 지정된 수를 가진다. (첨자는 배로 올라간다.)

int i = 5;
| 0000 0000 | 0000 0000 | 0000 0000 | 0000 0101 |
* method => 일
- 입력된 int 형의 값을 2진수의 문자열로 얻는 일

클래스명.method명으로 호출할 수 있다.
사용법)
int i = 30;
Integer.toBinaryString(i); // 1. 30을 입력받아
// 2. 2진수의 문자열로 변환하여
// 3. 결과를 내보낸다. -> 11110
* 8진수를 2진수로 변환
- 숫자 하나를 첨자 4 2 1인 비트로 변환하여 2진수로 기록, 비어있는 부분은 0으로 채운다.

* 16진수를 2진수로 변환
- 숫자 하나를 첨자 8 4 2 1인 비트로 변환하여 2진수로 기록, 비어있는 부분은 0으로 채운다.

* 2진수 음수 표현
- 보수법을 사용

1. 단항 연산자 (unary)
- 연산에 필요한 항이 하나인 연산자: ~, !, +, -, ++, --
사용법)
연산자 대상체(변수, 상수);
~ : tilde - 1의 보수연산
사용법) ~12 => -13 / ~-12 => 11
~ 양수: 부호 변경 1 증가
~ 음수: 부호 변경 1 감소
! : not -> true => false, false => true 변경
true나 false 앞에만 사용 가능
사용법)
!(3 > 4) => true : false 앞에 !이 붙어서 true
false : 3이 4보다 클 수 없으므로
boolean flag = true;
!flag => false가 나온다.
+ : 형식적인 제공
+9 => 9, +-9 => -9
- : 2의 보수 연산(부호 변경 연산) - 값은 그대로 두고 부호만 변경.
2023(양수의 2023)앞에 -을 붙이면 -2023 (음수 2023)
++ : 증가 연산, -- : 감소 연산
- 변수에만 사용할 수 있다.
- 대상체의 값을 1씩 증가시키거나, 대상체의 값을 1씩 감소시키는 일.
사용법)
전위연산 : 연산자 대상체;
대상체 연산자; 후위연산
* 단독으로 사용되면 대상체의 값을 1씩 증가시키거나, 1씩 감소시키는 일을 잘 수행한다.
int i = 100;
++i; // 100 -> 101
i++; // 101 -> 102
* 대입 연산자와 함께 사용되면 전위와 후위는 다른 값을 대입해준다.
(method의 parameter로 값을 할당하는 경우에도 동일)
- 전위: 내 것 먼저(증가, 감소연산 후 대입)
- 후위: 남의 것 먼저(대입 후 증가, 감소연산 수행)
=> 전위와 후위 연산을 사용할 때 다른 값이 할당될 수 있으므로 주의!!
* 전위
int i = 12;
int result = 0;
result = ++i; // 1. 대상체의 값을 증가시킨다. 12 -> 13, 2. 증가된 값을 할당한다.
-> i와 result의 값이 같다.
* 후위
int i = 12;
int result = 0;
result = i++; // 1. 대상체 값을 할당한다. 12, 2. 대상체의 값을 증가시킨다. 12 -> 13
-> i와 result의 값이 다르다.
2. 산술 연산자
: +, -, *, /, %(나눈 나머지를 구할 때, 10 % 2 = 0, 큰 수를 몇 가지의 가짓수로 만들어낼 때 사용, 2023 % 3 = 0, 1, 2)
대상체 연산자 대상체
3. 쉬프트 연산자 (비트밀기 연산)
: <<, >>, >>>
<< (left shift) : 비트를 왼쪽으로 밀고, 밀어서 빈칸을 항상 0으로 채운다.
>> (right shift) : 비트를 오른쪽으로 밀고, 밀어서 빈칸을 최상위 부호비트에 따라 양수면 0을 채우고, 음수면 1을 채운다.
>>> (unsigned right shift) : 비트를 오른쪽으로 밀고, 밀어서 빈칸을 항상 0으로 채운다.
사용법)
대상체 연산자(비트를 밀 방향) 밀칸수



4. 관계연산자
>, <, >=, <=, ==(같다: 같을 때 true, 다르면 false), !=(다르다: 다를 때 true, 같을 때 false)
- (대소비교): 결과가 boolean(true, false)으로 나온다.
5. 논리연산자
- 일반논리: 여러 개의 관계연산자를 붙여서 비교해야 할 때
&& (AND) : 전항과 후항이 모두 true일 때만 true 반환
|| (OR) : 전항과 후항이 모두 false일 때만 false 반환
사용법)
관계연산자 일반논리연산자 관계연산자


'study > Java' 카테고리의 다른 글
| [sist] 2024.01.03_Java : Arguments, Flow Chart, 조건문-if문 (2) | 2024.01.28 |
|---|---|
| [sist] 2024.01.02_Java : Operator(연산자), Package(패키지), Compile(컴파일) (2) | 2024.01.28 |
| [sist] 2023.12.27_Java : Comment(주석), DataType(데이터 형), 형 변환, Constant (2) | 2024.01.14 |
| [sist] 2023.12.26_Java : Java 설치와 실행, 변수 (2) | 2024.01.14 |
| 정석코딩 세미나 자바기초 프로그래밍 3주 - 3주차 후기 (4) | 2023.12.28 |