[JAVA]연산자와 우선순위

suyeon·2022년 8월 25일
1

JAVA

목록 보기
3/8
post-thumbnail

1. 산술연산자

종류: +, -, *, /, %(나머지)

public class Arith_Test{
    public static void main(String args[]){
		
		double answer;
		answer = 3+21/5;
		System.out.println(answer);
		answer=(3+21)/5;
		System.out.println(answer);
		answer=4+((15-7)/4);
		System.out.println(answer);
		answer=13/3+5*2;
		System.out.println(answer);
		answer=5.5%2.0;
		System.out.println(answer);
		
	}
  • 피연산자가 정수형이어야만 하는 C, C++과 달리 실수형도 가능하다. - 9*3 일 때 9와 3을 피연산자라고 한다.


2. 관계(비교)연산자

종류: ==, >, <, >=(크거나 같다), <=(작거나 같다), !=(같지 않다)

public class Relation_Test{
	public static void main(String args[]){

		System.out.println(3==4);	//false	
		System.out.println(3!=4);	//true	
		System.out.println(3>4);	//false
		System.out.println(3<5);	//true
		System.out.println(3>=3);	//ture
		System.out.println(3<=3);	//true
	}
}
  • 결과는 'ture' 또는 'false'의 논리형 결과를 반환한다.

3. 논리연산자

종류
&(and): 둘의 값이 모두 참이어야 'true' 값이 나온다.
&&(and): 둘의 값이 모두 참이어야 'true' 값이 나온다,
앞의 값이 참이 나올 경우 뒤의 값을 수행하지 않고 false로 반환한다.

|(or): 둘 중에 하나만 참이어도 'true' 값이 나온다.
||(or): 둘 중에 하나만 참이어도 'true' 값이 나온다, 앞의 값이 참인 경우 뒤의 값을 수행하지 않고 true로 반환한다.

!(not): 앞의 값이 참인 경우 거짓으로 반환한다.

public class Logical_Test{
	public static void main(String args[]){
		int a=10;
		System.out.println((a=20)==20);			//true
		//System.out.println(!a);				//a(변수)의 값은 거짓이 될 수 없기 때문에 오류가 발생한다.			

		boolean power=false;					//power를 false라고 지정
		System.out.println(power);				//false
		System.out.println(!power);				//true
		power=!power;							//power를 true로 변환
		System.out.println(!power);				//true

		int c =10;
		System.out.println((1<2)||(1>(c=20)));	//true
		System.out.println((1<2)&&(1>(c=20)));	//false
	}
}
  • 결과는 'ture' 또는 'false'의 논리형 결과를 반환한다.
  • &&, ||는 수행속도가 &, |에 비해 빠르고 효율성있다.

4. 증감(증가/감소)연산자

종류
++
++a(전위연산자): 먼저 a의 값을 1증가시키고, 수식에 적용한다.
a++(후위연산자): 수식에 적용한 후 , 나중에 변수 a의 증가시킨다.

--
--a(전위연산자): 먼저 변수 a값을 1감소시키고, 수식에 적용한다.
a--(후위연산자): 수식에 적용한 후 나중에 변수 a값을 1 감소시킨다.

public class plus{
	public static void main(String args[]){
		int a=10;
		System.out.println(a++);		//10
		System.out.println(a);			//11
		
		int b=10;
		System.out.println(++b);		//11
		System.out.println(b);			//11
		
	}
}  

5. 비트연산자

&: 두 비트가 모두 1이면 1, 하나라도 0이면 0
|: 두 비트가 모두 0이면 0, 하나라도 1이면 1
^: 두 비트가 서로 다르면 1, 같으면 0
~: 비트 반전

public class b{
	public static void main(String args[]){
		int a=3;
		int b=5;
		
		System.out.println(a&b);					//1
		System.out.println(a|b);					//7
		System.out.println(a^b);					//6
		System.out.println(~a);						//-4
		System.out.println(~b);						//-6
	
	}
}
  • 2진수로 바꿨을 때

    • 3을 2진수로 바꿨을 때: 00000011
    • 5를 2진수로 바꿨을 때: 00000101

(shift연산자)

>>: 원하는 비트 수 만큼 왼쪽으로 움직인다. (2배씩 줄어드는 효과)
<<: 원하는 비트 수 만큼 오른쪽으로 움직인다. (2배씩 늘어나는 효과)
>>>: 원하는 비트 수 만큼 왼쪽으로 움직인다.(부호에 상관없이 왼쪽 비트를 0으로 채운다.)

public class Shift{
	public static void main(String args[]){

	int a=16;
	int b=2;

	System.out.println(a>>b);	//4
	System.out.println(a<<b);	//64
	System.out.println(a>>>b);	//4   (양수로 변환되어서 나옴)
  • 사용하는 이유: 수행속도가 빠르기 때문이다.


6. 대입연산자

=:

a=b			//b를 a에 대입

+=:

a+=b			//a=a+b		a+b를 a에 대입

-=:

a-=b			//a=a-b		a-b를 a에 대입

*=:

a*=b			//a=a*b		a*b를 a에 대입

/=:

a/=b			//a=a/b		a/b를 a에 대입

%=:

a%=b			//a=a%b		a%b를 a에 대입

7. 조건연산자(삼항 연산자)

if else를 축약시켜 사용하는 것

public class If1{
	public static void main(String args[]){
	Scanner scan=new Scanner(System.in);
		int a=2;
		int b=3;
		int c;

		c=(a>b) ? a : b;
		System.out.println(c);		//값=3
	}
}

형식: 조건 ? 처리1(참) : 처리2(거짓)

  • 조건이 맞다면 처리1이 출력되고 조건이 틀리다면 처리2가 출력된다.

연산자와 우선순위

  • 단항연산자

    • (), [], ++, --, ~, !
  • 이항연산자

    • 산술연산자: *, /, %, +, -
    • 비트연산자: <<, >>, <<<
    • 관계연산자: >, >=, <, <=, ==, !=
    • 논리연산자: &, ^, |, &&, ||
  • 삼항연산자

    • ?:
  • 대입연산자

    • =, +=, -=, *=, /=, %=
profile
📖개발블로그📖

0개의 댓글