JAVA/JAVA기초

[JAVA기초] 연산 (Operate)

개발자하소서 2021. 11. 2. 08:48
728x90
반응형
SMALL

📌 연산자와 피연산자 

 

- 연산자 : 주어진 식을 계산하여 결과를 얻어내는 과정을 연산이라고 하며, 

              연산을 수행하는 기호를 연산자(Operator)라고 한다  (ex) +,-,*,/

 

- 피연산자 : 연산의 작업 대상자를 뜻한다.(operand) (ex) 변수, 상수, 수식

 

// x 가 3일때 수식 x2 - 3x + 4의 값을 계산하라
// 프로그램에서 계산하기 위해서는 수식을 사용한다
int x, y
 
 x = 3;
 y = x * x - 3 * x + 4;
 
 System.out.println(y);

📌 연산자의 종류 

 

1. 대입연산자 

    - 대입연산자(=)는 왼쪽에 있는 변수에 오른쪽에 있는 수식 값을 계산해 대입함

    - 왼쪽은 반드시 변수이여야 하고, 오른쪽은 어떠한 수식이라도 가능함 

 

x = 9; // 상수 9를 변수 x에 대입함

 

2. 산술연산자

    - 가장 많이 사용하는 연산자로 수식 계산에 사용된다. 

 

    - 사칙연산(+,-,*,/)은 일상생활에서 자주 사용하여 익숙하지만 주의할 몇가지가 있다.

    - / 는 나눗셈으로서 x를 y로 나누는 것이다. 이는 모든 피연산자가 정수형일 경우에만 정수 나눗셈을 한다. 

    - % 는 나머지로서 x를 y로 나눌 때 나머지 값이다.

 

public class Arithmetic {
  
  public static void main (String[] args){
  
	int result;
    double resultDouble;
    
    result = 3 + 2;
    System.out.println(result); // 5
    
    result = 3 - 2;
    System.out.println(result); // 1
    
    result = 3 * 2;
    System.out.println(result); // 6
    
    result = 3 / 2;
    System.out.println(result); // 1
    
    resultDouble = 3.0 / 2.0;
    System.out.println(result); // 1.5
    
    result = 3 % 2;
    System.out.println(result); // 1
   
  }

}

<예시출처> POWER JAVA 책 

 

 

3. 증감연산자

   - ++기호나 --기호를 사용하여 변수의 값을 증가시키거나 감소시키는 연산자 

   - 피연산자의 앞이나 뒤에 올 수 있는데, 위치에 따라 의미가 달라짐.

   - ++ : 증가 연산자 

   - --  : 감소 연산자

   - if, for, while 과 같은 반복문에서 주로 많이 사용 되며 주로 정수형 변수에 사용됨 

 

연산자 형식 의미
++x  x값을 1 증가 후 그 값을 사용
x++  x 값을 먼저 사용 후 1 증가
--x  x 값을 1 감소 후 그 값을 사용
x--  x 값을 먼저 사용 후 1 감소 
public class Unary{
 
	public static void main(String[] args){
    
      int x = 1;
      int y = 1;
      
      int nextx = ++x; // x 의 값이 증가 후 사용 됨 , nextx는 2가 된다.
      int nexty = y++; // y의 값이 사용된 후 증가 됨, nexty는 1이 된다.
    
     }

}

<예시출처> POWER JAVA 책 

 

 

4. 복합대입연산자

    - += 처럼 대입연산자와 산술연산자를 합쳐놓은 연산자이다.

    - x +=y 는 x=x+y 와 같다. 

 

5. 관계연산자

   - 관계연산자 (relation operator) 는 비교 연산자라고도 하며 두 개의 피연산자를 비교하는 데 사용된다.

   - 수학시간에 배웠던 부등호를 생각하면 된다.

   - 관계연산자의 결과는 true 혹은 false 값인 boolean 자료형으로 반환된다. 제어문에서 많이 사용되는 연산자다.

  

연산자 기호 의미 예시
== 두개 항이 값이 같으면 참, 아니면 거짓 num == 7;
!= 두개 항이 다르면 참, 아니면 거짓 num != 7;
> 왼쪽 항이 크면 참, 아니면 거짓 num > 7;
< 왼쪽 항이 작으면 참, 아니면 거짓 num < 7;
>= 왼쪽이 오른쪽보다 크거나 같을시 참 num >= 7;
<= 왼쪽이 오른쪽보다 작거나 같을시 참 num <= 7;
public class Comparison{

	public static void main(String[] args){
    
    	int x = 3;
        int y = 4;
        System.out.println( x == y); // false
        System.out.println( x != y); // true
        System.out.println( x > y);  // false
        System.out.println( x < y);  // true
        System.out.println( x <= y); // true
      
    }

}

<예시출처> POWER JAVA 책 

 

6. 논리연산자

    - 여러 개의 조건을 조합하여 참인지 거짓인지 따질 경우 사용한다. 

    - boolean형 값을 결과로 하는 조건식만을 허용한다.

    - && 가 || 보다 우선순위가 높기때문에 함께 사용될 때는 괄호를 사용해서 우선순위 명확히 해준다.

 

연산자 기호 사용 예시  의미 
&& (AND연산자) x && y x,y 모두 참일 경우 참
||(OR연산자) x || y x,y 중 하나만 참이면 참
!(NOT연산자) !x x가 참이면 거짓, x가 거짓이면 참

 

public class Logical {

	public static void main(String[] args){
    	int x =3;
    	int y =4;
        System.out.println( x == 3 ) && ( y == 8 ); // false
     	System.out.println( x == 3) || (y == 8); // true
    }

}

<예시출처> POWER JAVA 책 

 

 

 

7. 비트연산자

   - 비트연산은 2진수형태의 숫자 0과 1로 할 수 있는 연산이다.

   - 자바에서는 기본적으로 비트연산자가 7가지가 있다.

   - 비트연산자를 잘 활용하면 다양한 알고리즘 방법으로 작성 가능하고 복잡도를 줄여주는 역할을 한다

 

연산자 의미
~ ( NOT 연산) 비트를 1이면 0으로, 0이면 1로 반전시킴
보수를 사용할 경우 32자리를 기준으로 값을 반환한다.
& ( AND 연산) 기본 AND 연산자처럼 해당 자리수에서
둘다 1인 경우 1을 반환하고 나머지는 0을 반환한다.
ex) 1111 & 1000 = 1000
^ ( XOR 연산) x ^ y 형태를 사용하고 해당 자리수에서
서로 다른 경우 1을 반환하고 같은 경우 0을 반환한다.

ex) 1111 & 1000 = 111
| ( OR 연산) 기본 OR 연산자처럼 해당 자리수에서
하나라도 1인 경우 1을 반환하고 둘다 0인 경우 0을 반환한다.
ex) 1111 & 1000 = 1111
<< (비트 왼쪽 이동) 숫자의 모든 비트를 왼쪽으로 이동시키고 
오른쪽에 생기는 빈 비트 자리에는 0으로 채운다.
x의 비트를 왼쪽으로 y칸 이동시킨다
ex) 1111 << 2 = 111100
>> (비트 오른쪽 이동) 숫자의 모든 비트를 오른쪽으로 이동시킨다.
가장 우측에 있는 숫자가 밀려나가면 그냥 없어진다.
x의 비트를 오른쪽으로 y칸 이동시킨다
ex) 1111 >> 2 = 11
>>> (비트 오른쪽 이동 unsigned) 왼쪽 비트가 부호비트로 채워지지 않고 
0으로 채워진다.

 

 


📌 연산자의 우선 순위 & 결합 규칙 

연산자 우선순위

  • 산술 연산식에서는 덧셈, 뺄셈 보다 곱셈, 나눗셈 연산자가 우선 처리된다.
  • 단항, 이항, 삼항 연산자 순으로 우선순위를 갖는다.
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순위를 갖는다.
  • 단항과 대입 연산자제외한 모든 연산 방향은 왼쪽에서 오른쪽이다.
  • 복잡한 연산식에는 ( ) 괄호를 사용하여 우선순위를 먼저 정해준다.
  • 최우선연산자 ( ., [], () )
  • 단항연산자 ( ++,--,!,~,+/-   : 부정, bit변환>부호>증감)
  • 산술연산자 ( *,/,%,+,-,shift) < 시프트연산자 ( >>,<<,>>> ) >
  • 비교연산자 ( >,<,>=,<=,==,!= )
  • 비트연산자 ( &,|,,~ )
  • 논리연산자 (&& , || , !)
  • 삼항연산자 (조건식) ? :
  • 대입연산자 =,*=,/=,%=,+=,-=

 

● 정리 ●

 

1. 기본적으로 연산자에는 우선순위가 있다.

2. 우선순위 중 괄호()가 제일 높고, 산술 > 비교 > 논리 > 대입의 순서이며, 단항 > 이항 > 삼항의 순서다.

3. 연산자의 연산 진행방향은 왼쪽에서 오른쪽으로 진행된다.

4. 다만, 예외적으로 단항 연산자와 대입 연산자의 경우에는 오른쪽에서 왼쪽으로 진행된다.


 

 

 

 

 

728x90
반응형
LIST