Java SE Tutorials/Operators

Operators in Java

Soul-Learner 2016. 11. 28. 18:22
Java 프로그래밍, Java 언어의 연산자

연산자 우선순위 ( Operator Precedence )

 

연산자 

우선순위 

 1 항

 후증감(postfix)  expr++, expr--
 그 외의 단항 (unary)  ++expr --expr +expr -expr ~ !

 2 항

 산술

 곱셈, 나눗셈, 나머지(multiplicative)  *  /  %
 덧셈, 뺄셈(additive)  + -

 비트 이동 (shift), 산술연산자 아님

 <<  >>  >>>

 비교

 관계(relational)  < > <= >= instanceof
 동등 (equality)  ==  !=

 비트

 bitwise AND  &
 bitwise exclusive OR  ^
 bitwise inclusive OR  | 

 논리

 logical AND &&, & 
 logical OR  ||,  | 

 3 항

 3항 (ternary)   ? : 

 할당

 할당  = += -= *= /= %= &= ^= |= <<= >>= >>>=


할당 연산자 (단순 할당 연산자,  Assignment Operator ) : 우측의 값을 왼쪽의 변수에 할당한다
boolean b = false;
int i = 100;
final double PI = 3.141592;
String msg = "학습의 왕도는 이해와 반복";

산술 연산자 (Arithmetic Operators) ( + - * / % ) 사용 예

public class Tutorials 
{
	public static void main(String[] args) 
	{
		int a = 11;
		int b = 2;
		
		int result = a + b;
        System.out.printf("%d + %d = %d %n", a, b, result);
        
		result = a - b;
        System.out.printf("%d - %d = %d %n", a, b, result);
        
		result = a * b;
        System.out.printf("%d * %d = %d %n", a, b, result);
        
        result = a / b;
        System.out.printf("%d / %d = %d %n", a, b, result); // 5, Not 5.1
        
        result = a % b;
        System.out.printf("%d %% %d = %d %n", a, b, result);
        
        // 나눗셈의 몫이 소수로 나오게 하려면 계산에 사용된 어느 한개의 수의 자료형을 소수(double, float)로 한다
        double d1 = 11.0;
        double res = d1 / b;
        System.out.printf("%f / %d = %f %n", d1, b, res);
        
        // + 연산자는 2개의 문자열을 결합할 때도 사용된다
        String str = 1+2+3+"4";  // "64"
        System.out.printf("1+2+3+\"4\" = %s %n", str);
        
        str = "1"+2+3+4;  // "1234"
        System.out.printf("\"1\"+2+3+4 = %s %n", str);
	}
}

실행결과 화면

11 + 2 = 13 
11 - 2 = 9 
11 * 2 = 22 
11 / 2 = 5 
11 % 2 = 1 
11.000000 / 2 = 5.500000 
1+2+3+"4" = 64 
"1"+2+3+4 = 1234


단항 연산자 ( Unary Operators, + - ++ -- ! )

+ : Unary Plus Operator ( 양수 표현 , 이 연산자를 사용하지 않아도 모든 수는 기본적으로 양수)
- : Unary Minus Operator ( 음수 표현 )
++ : Increment Operator ( 변수의 값에 1을 더한다 )
--  : Decrement Operator ( 변수의 값에서 1을 뺀다 )
! : Logical Negation Operator ( 논리부정 연산자 )


단항 연산자의 사용 예

public class Tutorials 
{
	public static void main(String[] args) 
	{
		int num = +10;  // + 연산자를 사용하지 않은 것과 동일함
        System.out.printf("num = %d %n", num);
        
        // minus operator
        System.out.printf("num = %d %n", -num);
        
        // minus operator
        num = -num;
        System.out.printf("num = %d %n", num);
        
        // minus operator
        System.out.printf("num = %d %n", -num); // -(-10)=10
        
        // minus operator
        num = -5;
        System.out.printf("5 + num = %d %n", 5+num);
        
        num = 0;
        // Post Increment(값이 사용된 후에 증가함)
        System.out.printf("num=%d, num++ = %d %n", num, num++);
        System.out.printf("num = %d %n", num); // num = 1
        
        num = 0;
        // Pre Increment(값이 사용되기 전에 증가함)
        System.out.printf("num=%d, ++num = %d %n", num, ++num);
        
        num = 0;
        // Post Decrement(값이 사용된 후에 감소함)
        System.out.printf("num=%d, num-- = %d %n", num, num--);
        System.out.printf("num = %d %n", num); // num = -1
        
        num = 0;
        // Pre Decrement(값이 사용되기 전에 감소함)
        System.out.printf("num=%d, --num = %d %n", num, --num);
        
        // 논리 부정 연산자 ! (Logical Negation)
        System.out.printf("!(2==3) = %b %n", !(2==3));  // true
        System.out.printf("!(2!=3) = %b %n", !(2!=3));  // false
        
        boolean res = (10%2) == 1;  // 홀수인지 여부
        System.out.printf("10은 짝수인가? --> %b %n", !res); // 짝수인지 여부
        
        // Bitwise Inversion Operator ( Bitwise NOT Operator )
        num = 4;
        String binaryStr = Integer.toBinaryString(4);
        System.out.printf("%d의 이진수 문자열 = %s %n", num, binaryStr); //"00000100"
        
        int invertedNum = ~num;
        binaryStr = Integer.toBinaryString(invertedNum);
        System.out.printf("%d의 비트 반전 결과 = %s %n", num, binaryStr); //"11111011"
	}
}

위의 코드 실행결과

num = 10 
num = -10 
num = -10 
num = 10 
5 + num = 0 
num=0, num++ = 0 
num = 1 
num=0, ++num = 1 
num=0, num-- = 0 
num = -1 
num=0, --num = -1 
!(2==3) = true 
!(2!=3) = false 
10은 짝수인가? --> true 
4의 이진수 문자열 = 100 
4의 비트 반전 결과 = 11111111111111111111111111111011