연산자 우선순위
3 + 2 3 -> 경우 기초수학에서 배운것과 같다.(곱먼저 후 덧셈)
(3 + 2) 3 -> 기초수학과 동일(괄호를 이용해덧셈을 먼저 계산하도록 만듬)
연산자와 자료형
연산할 때는 자료형이 같아야 한다.
10 / 3
10 / 3.0 -> 보통은 에러가 나겠지만 에러가 나지 않는다면 컴파일러에 의해 한쪽으로 맞춰줄 경우이다. 중요한 것은 손실되지 않도록 변환하는 것이기 때문에
10 / 3.0f//묵시적 형변환
(float)(total/3.0)//명시적 형변환
나머지 연산자
/은 나눗셈이고 %는 나머지이다.
ex) 10/3 일 때 몫(/)은 3(정수를 정수로 나누었기에 값도 정수로 나온다.)이고 나머지(%)가 1
언제쓸까??
예를 들어 0~9까지의 수가 적힌 공이 있는데 3개의 주머니에 순차적으로 넣고 싶을 때
0~9를 순차적으로 나눌 경우 나머지가 0일땐 0, 1일땐 1,2일땐 2, 3일땐 0 처럼 특정범위 내로 가둘 때 쓸 수 있다.
또는 홀수 짝수를 구할 때, %2를 이용해 나머지가 1이면 홀수 0이면 짝수로 사용할 수 있다.
++과 --는 1씩 증가 1씩 감소
단항 연산자의 전위와 후위 연산
class PrePostDemo{
public static void main(String[] args){
int i = 3;
i++;
System.out.println(i); //print 4
++i;
System.out.println(i); //print 5
System.out.println(++i);// print 6
System.out.println(i++);// pirnt 6 (i가 먼저 출력되고 ++이 들어왔기 때문에 ++되기 전 값인 6이 나온다.
System.out.println(i);// print 7
}
}
-7 ~ 7 까지의 범위중 -2 초과 2이하의 범위를 표시 해라
할 때 -2 초과 2이하의 범위를 유효범위(도메인/수학적)
-2<x && x<=2 //수학처럼 -2<x≤2 로는 쓸 수 없음.
0과 1을 거짓과 참으로 인식해서
그림 아래 예제인 3 & 7 경우 교집합이기 때문에
0과 0은 거짓과 거짓으로 거짓(0)
0과 1은 거짓과 참으로 거짓(0)
1과 1은 참과 참으로 참(1)
만약 합집합이었다면
0과 0은 거짓 거짓으로 거짓(0)
0과 1은 거짓 참으로 참(1)
1과 1은 참과 참으로 참(1)
차집합이라면 (차이가 있다면 참이다)
0과 0은 거짓 거짓으로 차이가 없으니 거짓(0)
0과 1은 거짓 참으로 차이가 있으니 참(1)
1과 1은 참과 참으로 차이가 없으니 거짓(0)
부정 연산자는 비트 단위로 뒤집기
ex) ~3이 있다면
~3 = ~0011 (뒤집기) ->1100
3<<2 에서 3은 비트 2는 보내는 개수
0011 << 2 (3을 비트로 바꾸면 0011)
왼쪽으로 2만큼 밀면 1100 -> 12
주의!>>연산을 할 때
11(1011) >>2 를 할경우 1110
이유는 오른쪽으로 2칸을 밀 경우 1011 에서 마지막 2자리인 11이 밀려 나가게 되는데 그렇게 되면 ㅁㅁ10 으로 밀리게 되고 채워줘야 하는 빈칸 ㅁ의 앞이 1이면 빈칸이 1로 채워진다.
(음수를 표현하는 방식에서 맨 앞의 비트는 음수를 나타내는 부호비트가 되기 때문에 0 으로 채워지면 문제가 돼서 앞이 1이면 1로 채워지게 되는 것이다.)
어디에 사용할까
예전엔 비트 하나라도 절약하기 위해 사용
한 변수에 2개의 값을 대입하기
먼저 x값이라 정한 7을 넣어 맨 끝자리에 111이라는 값이 들어갔고 이후 8간 왼쪽으로 옮겨
x자리로 이동시킨다.
후 or연산자를 이용해 y값을 집어넣어 합친다.
value3 = 조건?참 값1:거짓 값2
ex)0<= vlaue && value <=100 ? "유효합니다":"잘못된값입니다"
? 앞에 쓰여진 0보다 크거나 같고 100보다 작거나 같으면이 조건
이 조건에 부합하는 참이면 유효합니다
부합하지 않는 거짓이면 잘못된 값입니다.
주의! 3항 연산자를 변수에 담을 때 참과 거짓의 출력값을 생각해서 자료형을 쓰자.
연산자 우선순위
연산자 우선순위가 있지만 필요시 ()를 이용하여 순서를 바꿀 수 있다.