일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL입문
- 크롤링 오류
- 배열 3요소
- DoitSQL
- 크롤링
- DoitSQL입문
- 예제
- html
- 생성자
- DoIt
- 우아한테크
- SQL
- 숫자형식오류
- 웹브라우저 수용도
- 자바
- 자바 예외
- 웹 브라우저 전쟁
- 함수
- 함수 선언
- 예외
- HTML역사
- 데이터베이스
- Doit입문SQL
- dbms
- 키-값 데이터베이스
- 배열 예제
- 페이지분석
- 숫자 형식
- 자바 오류
- R1C3
- Today
- Total
프로그래밍
[자바 기초] day01 : 연산자 본문
2023.05.02.화
연산자
- 데이터를 처리하여 결과를 산출하는 것을 연산이라고 한다
- 이 연산에 사용되는 표시, 기호를 연산자라고 한다
- 연산되는 데이터는 피연산자라고 한다
대입연산자
=, *=, /=, %=, +=, -=
변수공간 = 값;
값을 변수공간에 저장한다
: 일반적으로 대입 연산자는 우선순위가 낮은편이다.
대입연산자(=)와 비교연산자(==)를 헷갈리지 않도록 주의
a*=b는 a=a*b와 같다
a*=b | a = a*b |
a/=b | a = a/b |
a%=b | a = a%b |
a+=b | a = a+b |
a-=b | a = a-b |
산술연산자
+, -, *, /, %
순서대로 더하기, 빼기, 곱하기, 나누기(몫), 나머지
/ 는 그냥 나누는 것이 아닌 몫을 구하는 연산자이다
int a = 10;
System.out.println(a/3); //출력값: 3
소수점뒤의 value를 버림하여 3만 저장된다
즉 데이터 손실이 발생할 수 있다
%는 나머지 연산자이다
증감연산자
1) 전위 증감연산자
++data;
--data;
우선순위가 매우 높음
2) 후위 증감연산자
data++;
data--;
우선순위가 매우 낮음
모두 1씩 증가/감소 시켜주는 연산자이다
증감을 먼저 하는지 나중에 하는지 차이가 있다
int a = 1;
int b = 7;
res = ++a + b--;
System.out.println(res); //출력값: 9 (2+7 이때 a= 2, b=6)
비교연산자
>, <, >=, <=, ==, !=
코드에서 ! NOT(부정)
연산자 수행결과를 T/F(진위형,boolean)으로 반환
논리연산자
&&, ||, !
&&
AND 연산자는 두 조건을 동시에 만족시켜야 한다(둘다 참)
||
OR 연산자는 두 조건 중에 하나만 만족시키면 된다(둘 중에 하나는 참)
!
NOT(부정) 연산자 붙이면 부정(반대)가 된다
삼항(조건)연산자
조건 ? 참 : 거짓
앞의 조건이 참이면 첫번째 값이 거짓이면 두번째 값이 출력
int a = 10;
int b = 5;
int res = a>b ? a : b;
System.out.println("둘 중 큰 값은 "+res); //출력: 둘 중 큰 값은 10
작성할때 다음과 같이 작성하지 않도록 주의
int a = 10;
int b = 5;
int res = a>b ? b : a;
System.out.println("둘 중 큰 값은 "+res); //출력: 둘 중 큰 값은 5
시프트(shift) 연산자
>>, <<, >>>
쉬프트 연산자는 bit 단위의 연산을 하며 오른쪽 또는 왼쪽으로 이동하여 값에 대화를 일으킨다
>> | bit값을 오른쪽으로 이동 (빈 자리는 부호값으로 대입) 한다 |
<< | bit값을 왼쪽으로 이동 (빈 자리는 0으로 대입) 한다 |
>>> | bit값을 오른쪽으로 이동 (빈 자리는 0으로 대입) 한다 |
// 쉬프트 연산자 >>, <<, >>>
int x = 64; // -64;
int n = 2;
System.out.println("x >> n = " + (x >> n)); // 나눗셈, (x / 2^n)
System.out.println("x << n = " + (x << n)); // 곱셈, (x * 2^n)
System.out.println("x >>> n = " + (x >>> n));
System.out.println("x >> 34 = " + (x >> 34)); // x / 2^(n % 32)
System.out.println("x << 34 = " + (x << 34));
System.out.println("x >>> 34 = " + (x >>> 34));
비트(bit) 연산자
&, |, ^, ~
연산의 대상이 되는 값들을 내부적으로 bit단위로 변경한 후 연산을 수행하는 연산자이다
& | 비트 단위의 AND |
| | 비트 단위의 OR |
^ | XOR (배타적 OR) |
~ | 단항 연산자 이며, 비트를 반전한다. 0은 1로 1은 0으로 만듬 |
x | y | x | y | x & y | x ^ y |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 | 0 |
// 비트 연산자 &, |, ^, ~
int num = 170;
System.out.println("num & 15 = " + (num & 15)); // num & 15 = 10 , mask 연산
System.out.println("num | 15 = " + (num | 15)); // num | 15 = 63, 특정 비트를 1로 셋팅
System.out.println("num ^ 15 = " + (num ^ 15)); // num ^ 15 = 58, 특정 비트를 반전시킬 때.
System.out.println("~num = " + (~num)); // ~num , 비트 반전, 1의 보수 표현
연산자 우선순위
보통의 상식과 같은 순서대로 되어있다
에러가 나지 않았고 로직에 문제가 없을 것 같을 때 확인해보는것이 좋다
종류 | 연산자 | 우선순위 |
증감 연산자 | ++, -- | 1 |
산술 | +, -, *, /, % | 2 |
시프트 | >>, <<, >>> | 3 |
비교 | >, <. >=, <=, ==, != | 4 |
비트 | &, |, ^, ~ | ~만 1순위, 나머지는 5순위 |
논리 | &&, ||, ! | !만 1순위 나머지는 6순위 |
조건(삼항)연산자 | ?, : | 7 |
대입 | =, *=, /=, %=, +=, -= | 8 |
깃허브
https://github.com/jihyean/Java/tree/main/day01/src
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] day03 : 난수 생성하기(Random 클래스 활용) (0) | 2023.05.06 |
---|---|
[자바 기초] day03 : 배열(array) (0) | 2023.05.04 |
[자바 기초] day02 : 이중 반복문(예제 중심) (0) | 2023.05.03 |
[자바 기초] day02 : 제어문 (0) | 2023.05.03 |
[자바 기초] day01 : 패키지, 클래스, 함수, 변수 (0) | 2023.05.03 |