월루를 꿈꾸는 대학생
연산자 본문
연산자란?
✔연산을 수행하는 기호
연산자
✔연산을 수행하는 기호
피연산자
✔연산자의 작업 대상 ( 변수, 상수, 리터럴 )
연산자는 피연산자로 연산을 수행하면 항상 결과값을 반환
연산자 우선순위
연산자의 우선순위로 항상 차례대로 계산이 되는 것이 아니라 우선순위가 높은 연산자부터 계산이 진행되는 방식
연산자 결합 법칙
✔ 산술 > 비교 > 논리 > 대입 순으로 진행
✔ 단항 > 이항 > 삼항
✔ 단항&대입 빼고 다 왼->우 임
산술변환
✔이항 연산자의 경우 두 피연산자의 타입이 일치해야하므로 타입을 맞춰줘야함
int i = 10;
float f - 20.0f;
float result = f + (floeat) i ;// 형변환을 해야 서로 산술이 가능
* 다만 큰 타입으로 변환시에는 형변환 연산자 생략가능
* 연산결과의 타입은 피연산자 타입과 일치 즉 int연산하면 소수점은 사라지고 정수만 남음
]즉 저기 a,b는 byte 타입이라 int 보다 작음
연산자의 개입이 있을 경우 해당 피연산자들은 int 보다 작기에 int로 변환이 된 후 계산 즉 byte값이 아니다
해당 오류를 없애기 위해선 형변환이 필요
단항 연산자
✔ 증감 연산자 : 피연산자값 1증가
✔ 감소 연산자 : 피연산자값 1감소
✔ 값이 왜 300이 아니라 44일까 ? byte형이기 때문에 byte는 2의 8승으로 -128 ~ 127 범위 이상의 값을 담을 수 없어서 담는데까지 담고 나머지 버린 후 값을 낸 거다
✔ int와 int의 곲은 int이기 때문이다 이미 int * int 계산한 결과가 int라서 오버플로우가 발생 -> 그 값이 long c에 담기는 것
즉 값을 맞추기 위해 이미 계산 전에 형변환이 일어나야함 즉 a 나 b 에 형변환을 시켜줘서 더 큰 쪽으로 계산결과가 형변환 일어나도록 해주는 게 포인트
✔ 리터럴 혹은 상수끼리의 연산은 실행 과정동안 변하는 값이 아니기에 컴파일 시 컴파일러가 계산해서 그 결과로 대체
즉 컴파일러가 미리 덧셈연산을 수행하기 때문에 실행시 덧셈 연산 x 즉 실행 전에 이미 컴파일러가 결과를 c2에 저장한다는 것
✔ int 간의 나눗셈 int / int 의 경우 값은 int!!! 소숫점은 버린다
✔Math.round() 함수가 있다
✔나머지 연산자 %
int 나누기 하면 정수값이니까 소수 없어져서 몫 나옴
% 연산자는 나머지가 나옴
✔ 해당 나머지 연산자 % 는 짝수 홀수 배수 검사에 쓰임!!
비교 연산자
10 == 10.0f 의 경우 대입 연산자 ==때문에 int 10이 float 형을 자동 형변환이 되어 같은 값으로 인식
다만 0.1의 경우는 정수가 아니라 소수이다 즉 값의 오차값이 있을 수 있어서 같을 수가 없다고 판단
✔ 문자열 비교는 equals()
new로 만든 거는 객체이기 때문에 주소값이라 해당 문자열이랑 다름
그래서 equals() 함수를 사용해서 객체가 달라도 내용이 같으면 true 반환
equalsIgnoreCase()의 경우 대소문자 구분 x
논리연산자
논리 부정 연산자 !
x || y 의 경우 x가 참이면 뒤에 y도 참이다
x && y 의 경우 x 가 거짓이면 전체적으로 거짓이다
이러한 로직을 이요해서 더욱 효율적으로 값 처리가 가능하다
비트연산자
✔ | -> OR 연산자 : 피연산자 중 한 쪽의 값이 1이면 1을 결과로 얻는다 그외에는 0을 얻는다
✔ & -> AND 연산자 : 피연산자 양 쪽이 모두 1이어야만 1을 결과를 얻고 그 외에는 0을 얻는다
✔^ -> XOR 연산자 : 피연산자의 값이 서로 다를 때만 1을 결과로 얻는다 같을 때는 0을 얻는다
쉬프트 연산자
✔ X << N 은 X의 2 N승과 같다
✔X >>N 은 X / 2 N승과 같다
✔ 조건 연산자 ? :
- 조건식에 따라사 참이면 앞에 식을 거짓이면 뒤에식을 수행
EX _ X>3 ? TRUE : FALSE
'Programing > Java' 카테고리의 다른 글
ch 4 조건문과 반복문 _ 알고리즘 (0) | 2021.03.07 |
---|---|
ch4 조건문과 반복문 (0) | 2021.03.07 |
Java 알고리즘 1주차 (0) | 2021.02.22 |
0221 java 스터디 1주차 (0) | 2021.02.21 |
Java 이클립스 + jdk 설치 (0) | 2021.02.21 |