[Java] Operator(연산자)(1)__개발공부 3일차-4
연산자/ 피연산자
연산자(Operator)란?
연산을 수행하는 기호 + ; , () {} 등등
피연산자(operand)란?
연산자의 작업 대상(변수, 상수, 리터럴, 수식)이다.
연산자의 종류
연산자는 '기능' 또는 '피연산자의 갯수'로 종류를 분류한다.
[기능] 기준으로 분류
ㄱ. 산술 연산자 + - * /
ㄴ. 비교 연산자
ㄷ. 논리 연산자 !부정(not)연산자
1)일반논리연산자 : ! && ||
2)비트논리연산자 : ~ & | ^
ㄹ. 대입 연산자
ㅁ. 기타
ㅂ.쉬프트 연산자 >> << >>>
[피연산자의 갯수]로 분류 --> 항의 개수로 분류한다는 의미
ㄱ.단항 연산자 항1 or !항
ㄴ.이항 연산자 항1 + 항2
ㄷ.삼항 연산자
산술연산자
+ - *
int x = 3;
System.out.println( x + 5 ); // 덧셈 연산자 8
System.out.println( x - 5 ); // 뺼셈 연산자 -2
System.out.println( x * 5 ); // 곱셈 연산자 15
(주의) / %
System.out.println( x / 5 ); // 나눗셈 연산자 0 int/int = int 정수
System.out.println( x % 5 ); // 나머지 연산자 0 int/int = int 정수
System.out.println( 정수 / 0 ); // ArithmeticException Err(산술적예외 오류) 발생
System.out.println( 실수 / 0 ); // Infinity 무한대 리터럴
System.out.println( (정수 or 실수) % 0 ); // NaN == Not a Number
비교연산자
> < >= >= ==(같다) !=(다르다)
결과는 true / false 같은 논리형으로 출력된다.
System.out.println( 3>5 ); //false
System.out.println( 3<5 ); //true
System.out.println( 3>=5 ); //false
System.out.println( 3<=5 ); //true
(주의)
1. 같다 비교 연산자 ==
System.out.println( 3==5 ); //false
System.out.println( 3!=5 ); //true
int x = 3;
System.out.println( x=5 ); // 이거Err안난다. = 이기 때문에 그냥 x에 5값을 할당한다는 의미로 받아들여진다.
!= =! 위에 코딩처럼 완전히 다른 의미이다.
일반논리연산자
1)일반논리연산자: ! && || 자바의 정석(p114)
ㄱ. && 일반 논리 AND 연산자(논리곱)
t && t -> t 피연산자 모두 true 일때만 true 결과이다.
t && f -> f
f && f -> f
f && f -> f
ㄴ. || 일반 논리 OR 연산자(논리합)
t||t ->t 1 | | 1 -> 1 피연산자 중에 하나만 true이면 true 결과이다.
t||f ->t 1 0 1
f||t ->t 0 1 1
f||f ->f 0 0 0
ㄷ. ! 부정연산자 == not 연산자
참을 부정하면 거짓이되고
거짓을 부정하면 참이된다.
!true -> false
!false -> true
부정연산자 뒤에는 true 나 false가 와야 한다. int나 다른 타입의 자료형이 올수 없다.
System.out.println(5>3); //true 자바의 정석 (p91 연산자 우선 순위)
System.out.println(!5>3); //Err 뜬다. !피연산자가 5int 정숫값이 왔기 때문이다.
***비교 연산자 보다 부정! 연산자 우선 순위가 높아서***
에러메세지 : The operator ! is undefined for the argument type(s) int
System.out.println(!(5>3)); // ()인 우선 연산자를 사용해줘서 우선순위를 바꿔주면 Err는 해결된다.
System.out.println(3>5 && 2>100); //---->false 출력
System.out.println(3<5 && 100>2); //---->true 출력