728x90
반응형
SMALL

증감 연산자

증가 연산자(++) : 피연산자의 값을 1 증가 시킵니다.감소 연산자(--) : 피연산자의 값을 1 감소시킴

타입 설명 사용 예

전위형 값이 참조되기 전에 증가/감소 시킨다. k = ++j;
k = --j;    
후위형 값이 참조된 후에 증가/감소 시킨다. k = j++;
k = j--;    

증감 연산자가 독립적으로 사용된 경우, 전위형과 후위형의 차이는 없다.

++k; k++; = > 값 동일

class Operator2_1 {
    public static void main(String[] args) {
        int k = 0, j = 3;

        // 후위 형
        k = j++;
        System.out.println("k = j++;, k = " + k);
        System.out.println("k = j++;, j = " + j);
        // 다르게 표현 가능
//        k = j;
//        j++;
//        System.out.println("k = j++;, k = " + k);
//        System.out.println("k = j++;, j = " + j);

        // 값 초기화
        k = 0;
        j = 3;

        // 전위 형
        k = ++j;
        System.out.println("k = ++j;, k = " + k);
        System.out.println("k = ++j;, j = " + j);
        // 다르게 표현 가능
//        ++j;
//        k = j;
//        System.out.println("k = ++j;, k = " + k);
//        System.out.println("k = ++j;, j = " + j);
        
    }
}

부호 연산자

'-' 는 피연산자의 부호를 반대로 변경합니다.'+' 는 아무런 일도 하지 않음(실제 사용X)

class Operator2_2 {
    public static void main(String[] args) {
        int i = -10;
        i = +i;
        System.out.println("i = +i; = " + i);

        i = -10;
        i = -i;
        System.out.println("i = -i; = " + i);
    }
}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

사칙 연산자와 산술변환  (0) 2023.01.18
형변환 연산자와 자동 형변환  (0) 2023.01.18
연산자  (0) 2023.01.18
문자와 문자열  (0) 2023.01.18
기본형과 참조형  (2) 2023.01.18
728x90
반응형
SMALL

연산자와 피연산자 구별하기

9 * x + 3

연산자 : 연산을 수행하는 기호 -> * , +

피연산자 : 연산자의 연산 수행 대상 -> 9 , x , 3

*"모든 연산자는 연산결과를 반환한다.

"즉, 연산결과를 반환하지 않으면 연산자가 아니다.ex) () -> 괄호는 연산자가 아니다.

연산자의 종류

종류 연산자 설명

산술 연산자 + - * / % << >> 사칙 연산과 나머지 연산(%)
비교 연산자 < > >= <= == != 크고 작음과 같고 다름을 비교
논리 연산자 &&  
대입 연산자 = 우변의 값을 좌변에 저장
기타 연산자 (type) ?: instanceof 형변환 연산자, 삼항 연산자, instanceof연산자

연산자의 우선순위

하나의 식에 연산자가 둘 이상 있을 때, 어떤 연산을 먼저 수행 할지를 자동 결정하는 것!= > 5 + 3 * 4

  1. 1.3 * 4
  2. 2.5 + 12 연산 순서를 수동으로 결정하고 싶다면 괄호() 를 사용하면 된다.= > (5 + 3) * 4
  3. 1.5 + 3
  4. 2.8 * 4

연산자 우선순위 표

우선순위 연산자 설명 결합 방향

1 [] 첨자 연산자 왼쪽에서 오른쪽으로
. 멤버 연산자 왼쪽에서 오른쪽으로
2 ++ 후위 증가 연산자 왼쪽에서 오른쪽으로
-- 후위 감소 연산자 왼쪽에서 오른쪽으로
3 ! 논리 NOT 연산자 오른쪽에서 왼쪽으로
~ 비트 NOT 연산자 오른쪽에서 왼쪽으로
+ 양의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
- 음의 부호 (단항 연산자) 오른쪽에서 왼쪽으로
++ 전위 증가 연산자 오른쪽에서 왼쪽으로
-- 전위 감소 연산자 오른쪽에서 왼쪽으로
(타입) 타입 캐스트 연산자 오른쪽에서 왼쪽으로
4 * 곱셈 연산자 왼쪽에서 오른쪽으로
/ 나눗셈 연산자 왼쪽에서 오른쪽으로
% 나머지 연산자 왼쪽에서 오른쪽으로
5 + 덧셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
- 뺄셈 연산자 (이항 연산자) 왼쪽에서 오른쪽으로
6 << 비트 왼쪽 시프트 연산자 왼쪽에서 오른쪽으로
>> 부호 비트를 확장하면서 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
>>> 부호 비트까지 모두 비트 오른쪽 시프트 왼쪽에서 오른쪽으로
7 < 관계 연산자(보다 작은) 왼쪽에서 오른쪽으로
<= 관계 연산자(보다 작거나 같은) 왼쪽에서 오른쪽으로
> 관계 연산자(보다 큰) 왼쪽에서 오른쪽으로
>= 관계 연산자(보다 크거나 같은) 왼쪽에서 오른쪽으로
instanceof 인스턴스의 실제 타입 반환 왼쪽에서 오른쪽으로
8 == 관계 연산자(와 같은) 왼쪽에서 오른쪽으로
!= 관계 연산자(와 같지 않은) 왼쪽에서 오른쪽으로
9 & 비트 AND 연산자 왼쪽에서 오른쪽으로
10 ^ 비트 XOR 연산자 왼쪽에서 오른쪽으로
11     비트 OR 연산자
12 && 논리 AND 연산자 왼쪽에서 오른쪽으로
13      
14 ? : 삼항 조건 연산자 오른쪽에서 왼쪽으로
15 = 대입 연산자 및 복합 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, =)
class Operator1_1 {
    public static void main(String[] args) {
        int x = 10;
        int y = 20;

        // + 연산자는 피연산자가 2개인 이항 연산자 임으로 단항 연산자인 -x 의 -가 먼저 실행된다.
        System.out.print("-x + 3 = ");
        System.out.println(-x + 3); // -10 + 3 = -7

        System.out.print("x + 3 * y = ");
        System.out.println(x + 3 * y); // 10 + (3 * 20) = 70

        System.out.print("x + 3 > y - 2 = ");
        System.out.println(x + 3 > y - 2); // false
        System.out.print("x + 3 < y - 2 = ");
        System.out.println(x + 3 < y - 2); // true

        System.out.print("x > 3 && y < 2 = ");
        System.out.println(x > 3 && y < 2); // false

        int result = x + y * 3;
        System.out.println("result = " + result); // 10 + (20 * 3), result = 70
    }
}

연산자의 결합규칙

우선순위가 같은 연산자가 있을 때, 어떤 것을 먼저?

= > 3 + 4 - 5 -> (3 + 4) - 5

기본적인 계산 순서는 왼쪽에서 오른쪽

대입과 단항 연산자일 경우 오른쪽에서 왼쪽

1. 산술 > 비교 > 논리 > 대입 : 대입은 제일 마지막에 수행

2. 단항(1) > 이항(2) > 삼항(3) : 단항 연산자의 우선순위가 제일 높음

3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행 방향은 왼쪽에서 오른쪽임

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

형변환 연산자와 자동 형변환  (0) 2023.01.18
증감 연산자와 부호 연산자  (0) 2023.01.18
문자와 문자열  (0) 2023.01.18
기본형과 참조형  (2) 2023.01.18
상수와 리티럴  (0) 2023.01.18
728x90
반응형
SMALL

문자와 문자열의 차이 확인하기

class Variable4_1 {
    public static void main(String[] args) {
        char ch1 = 'A'; // 문자
        // char ch2 = 'AB'; // Error 발생
        // char ch3 = ''; // Error 발생, 빈 문자 불가능

        String s1 = "ABC"; // 문자열
        String s2 = ""; // 빈 문자열 가능
        String s3 = "A"; // 문자 한 개도 문자열!

        // 아래 두 표현식 모두 사용 가능하지만 ss2 방식은 거의 사용하지 않음!
        String ss1 = "AB";
        String ss2 = new String("AB");

        System.out.println("ss1 = " + ss1);
        System.out.println("ss2 = " + ss2);
    }
}

문자열 결합

class Variable4_2 {
    public static void main(String[] args) {
        String s1 = "A" + "B"; // "AB"
        System.out.println("s1 = " + s1);

        // 문자열은 문자열하고만 결합할 수 있기 때문에
        // 숫자를 문자열로 바꾼 다음에 결합 합니다.
        String s2 = "" + 7;
        // "" + 7 => "" + "7" = "7"
        System.out.println("s2 = " + s2);

        // 문자열 결합 순서에 의한 차이 확인!
        String s3 = "" + 7 + 7;
        // "" + 7 + 7 => "7" + 7 => "7" + "7" = "77"
        System.out.println("s3 = " + s3);

        String s4 = 7 + 7 + "";
        // 7 + 7 + "" => 14 + "" = "14"
        System.out.println("s4 = " + s4);
    }
}

두 변수의 값 교환하기

class Variable4_3 {
    public static void main(String[] args) {
        int x = 10, y = 20;
        // x 와 y 값을 교환해 보겠습니다.
        x = y; // x = 20;
        // 변수는 하나의 값 밖에 저장할 수 없기 때문에 기존의 x의 값 10은 사라지고 20이 됩니다.
        y= x; // y = 20;
        // y는 20 이된 x의 값을 받습니다.

        System.out.println("x = " + x); // 20
        System.out.println("y = " + y); // 20

        System.out.println();
        // 교환이 제대로 되지 않았습니다!

        int a = 10, b = 20;
        int tmp; // 교환에 중간다리 역할을 해 줄 변수 하나를 선언합니다.
        // a 와 b 값을 교환해 보겠습니다.
        tmp = a; // a = 10, tmp = 10
        a = b; // b = 20, a = 20
        b = tmp; // tmp = 10, b = 10

        // 결과로 a = 20, b = 10 이어야 됩니다.
        System.out.println("a = " + a); // 20
        System.out.println("b = " + b); // 10
        System.out.println("tmp = " + tmp); // 10

        // 교환이 성공적으로 되었습니다!
    }
}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

증감 연산자와 부호 연산자  (0) 2023.01.18
연산자  (0) 2023.01.18
기본형과 참조형  (2) 2023.01.18
상수와 리티럴  (0) 2023.01.18
변수  (0) 2023.01.18

+ Recent posts