내일배움캠프 7기

Spring7기 7일차(자바 사칙연산)

suuuki 2024. 10. 9. 23:17

사칙연산

 

피연산자: 계산할때 계산의 대상이 되는것

ex)연산자로 인해 계산되는 숫자

연산자: 계산의 목적이 되는거

ex)덧셈,뺄셈처럼 계산할 기호

 

산술 연산자

+,-, *, /, %(나머지),, <<, >>

 

비교 연산자

>, <,>=, <=,==(좌우가 동일), !=(좌우가 동일하지x)

논리연산자

&&(그리고 조건=비교해서 트루값이 나오는거,주로 if문),||(or 조건,a또는 b가 트루를 만족할때), !(not조건, 논리연산 뒤집는)

&&(AND),||(OR),!(NOT)

-비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 ㅇ녀산자

조건을 연결하였을 때 boolean 값들을 조합하여 참(true) 또는 거짓(false) 값인 boolean 값을 출력

대입연산자

=,++, --

변수를 바로 연산해서 그 자리에서 저장하는(대입하는) 연산자

-기본연산자: =

-복합대입연산자: +=, -=, *= 등등

 ++: += 1

 --: -= 1

 

기타연산자

(type)형변환연산자, ?:, instance of

-형변환 연산자

int intNumber = 93 + (int)98.8;
System.out.println(intNumber); // 93 + 93 =191

double doubleNumber = (double)93 +98.8;
System.out.println(doubleNumber); //93.0+98.8 =191.8

-삼항 연산자

비교연산자와 항상 함께 쓰인다

비교연산자의 경과: true or false -> 이 결과의 값에 따라 결정되는 무언가

조건 ? 참 : 거짓

int x = 1;
int y = 9;

boolean b =(x==y) ? true :false;
System.out.println(b); //false

String s = (x !=y ) ? "정답" : "오답"; //x가 y랑 다르니? 응!!
System.out.println(s); //정담

int max = (x > y) ? x : y;
System.out.println(max); //9

int min =(x < y) ? x : y; //x가 y 보다 작니? 맞으면 x, 틀리면 y
System.out.println(min); //1

-instance of(3주차에서 자세히!->클래스, 객체)

피 연산자가 조건에 명시된 클래스의 객체인지 비교하여 

맞으면->true

틀리면->false

 

[연산자 우선순위 : 산술 >비교 >논리 >대입]

우선순위에 따라 최종적인 응답값이 결정된다

단, 괄호로 감싸주면 괄호안의 연산이 최우선순위로 계산된다

public class W08 {
    public static void main(String[] args) {
        int x = 2;
        int y = 9;
        int z = 10;
                       //비교  논리  비교
        boolean result = x < y && y< z;
        System.out.println(result); //true

        result = x + 10 < y && y < z;
        System.out.println(result); //false && true ->false

        result = x + 2 * 3 > y;
        System.out.println(result); //false

        result = (x + 2) * 3 > y;
        System.out.println(result); //true
    }
}

 

산술변환

타입이 다르면, 두 피연산자의 타입을 같게 일치 (둘중에 저장공간 크기가 더 큰 타입으로 일치)

-피연산자의 타입이 int 보다 작은 short 타입이면 int로 변환

-피연산자의 타입이 long 보다 작은 int, short 타입이면 Long으로 변환

-피연산자의 타입이 float보다 작은 long, int, short 타입이면 float으로 변환

-피연산자의 타입이 double 보다 작은 float, long, int, short 타입이면 double으로 변환

-이처럼, 변수 여러 개를 연산했을 때 결괏값은 피-연산자 중 표현 범위가 가장 큰 변수 타입을 가지게 됩니다.

public class W09 {
    public static void main(String[] args) {
        short x =10;
        int y = 20;

        int z = x+y;

        long lx = 30L;
        long lz = z + lx; //long타입으로

        float fx = x;
        float fy = y;
        float fz = z;

        System.out.println(lz); //60
        System.out.println(fx); //10.0
        System.out.println(fy); //20.0
        System.out.println(fz); //30.0
    }
}

 

비트연산

Byte를 8등분 한 게 Bit

-Bit는 0,1 둘 중의 하나의 값만을 저장하는 컴퓨터가 저장(표현) 가능한 가장 작은 단위

-컴퓨터의 가장 작은 단위인 Bit이기 때문에 연산중에서 Bit 연산이 제일 빠름

-물론 이전에 배운 대로 0,1 값으로 산술연산을 하거나, 비교 연산을 할 수 있지만 비트 연산을 통해 자릿수를 옮길 수도 있음

-이처럼 Bit의 자릿수를 옮기는 것을 비트 연산

-'<<'(왼쪽으로 자릿수옮기기), '>>'(오른쪽으로 자릿수옮기기)

-0,1 은 2진수 값이기 때문에,

자릿수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는 것과 동일

 ex)0101->1010  (5->10)

자릿수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 연산되는 것과 동일

public class W10 {
    public static void main(String[] args) {
        System.out.println(3 << 2); //12   11(2)->1100(2)
        System.out.println(3 << 1); //6    11(2)->110(2)
    }
}