hyeonga_code

Java_20_연산자_논리 부정 연산자 ! , 이항 연산자 본문

Java

Java_20_연산자_논리 부정 연산자 ! , 이항 연산자

hyeonga 2023. 9. 18. 07:59
반응형

- Operand_피연산자
    - 연산자의 작업 대상

 - Operator_연산자
    - 어떠한 기능을 수행하는 것
    - 연산자보다 오류의 파악이 중요합니다.
    - 유형
            - 논리 부정 연산자_!
                - true > false
                - false > true
                - 피연산자가 boolean 일 때에만 사용할 수 있습니다.

        - 이항 연산자
            - 특징
                - 연산을 수행하기 전에 피연산자의 타입을 일치시킵니다.
                - int 보다 크기가 작은 타입은 int로 형변환 합니다.
                    - byte, char, short
                    - 결국 연산을 기본적으로 int형으로 진행하기 때문에 처음부터 int형으로 선언하는 것이 좋습니다.
                - 피연산자 중 표형 범위가 큰 타입으로 형변환 합니다.

                      기본 형         변환            최종
                  ---------------------------------------------
                    byte + short    int + int          int
                    char + int        int + int          int
                    float + int        float * float   float
                    long + float     float * float   float
                    float + double  double * double double
                - char 문자형
                    - 문자마다 지정된 숫자 코드가 있습니다.
                    - UTF-8 을 주로 사용합니다.
                    - ASCII-code
                        - A(65) - Z(96) 
                        - a(97) - z(103)
'OperatorEx.java'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package basic;
//모든 클래스는 패키지 안에 생성합니다.
 
public class OperatorEx {
    // 모든 함수_메소드는 클래스 안에 작성합니다.
    
    public static void main(String[] args) {
        // Java의 모든 코드는 함수 안에 작성합니다.
 
        // 이항 연산자        
        int a = 1000000;
        int b = 2000000;
        
        long c = a * b;
        System.out.println("long c = a * b : " + c);
        
        c = (long)a * b;
        System.out.println("long c = (long)a * b : " + c);
            /*
                 long c = a * b : -1454759936
                     - int 형으로 변환하여 연산을 진행했으므로 
                      범위를 벗어나게 되어 overflow가 발생합니다.
                long c = (long)a * b : 2000000000000
                    - int 형으로 변환한 연산을 진행한 후 
                      long으로 형변환하여 정확한 값이 출력됩니다.
             */    
        
        System.out.println("----------");    
        
        long num1 = 1000000 * 1000000// a는 -727,379,968
        int num2 = 1000000 * 1000000 / 1000000// c는 -727
        long num3 = 1000000 * 1000000L; // b는 1,000,000,000,000 
        int num4 = 1000000 / 1000000 * 1000000// d는 1,000,000
        
        System.out.println("1000000 * 1000000 : " + num1);
        System.out.println("1000000 * 1000000L : " + num3);
        System.out.println("1000000 * 1000000 / 1000000 : " + num2);
        System.out.println("1000000 / 1000000 * 1000000 : " + num4);
            /*
                1000000 * 1000000 : -727379968
                    - int*int 이므로 int 형의 범위를 벗어납니다.
                1000000 * 1000000L : 1000000000000
                    - int*long 으로 지정했으므로  long 형의 범위를 벗어나지 않습니다.
                1000000 * 1000000 / 1000000 : -727
                    - int*int/int 에서 곱하기가 먼저 연산되어 int 형의 범위를 벗어납니다.
                1000000 / 1000000 * 1000000 : 1000000
                    - int/int*int 에서 나누기가 먼저 연산되어 int 형의 범위를 벗어나지 않습니다.
             */
cs

 

반응형