☕JAVA/🐣 강의 [JAVA]

[JAVA][기초] 연산자

디카페인라떼 2022. 10. 4. 22:58

[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.

Java for Beginner - YouTube

 

Java for Beginner

[교재 link] https://github.com/namoosori/java-for-beginner/tree/master/doc Java for Beginner 강의에서 다루는 내용은 다음과 같습니다. - Java 개요 : Java 언어가 어떤 언어이고 Java 언어를 이용해 프...

www.youtube.com


연산자의 이해

  • 연산자 : 피연산자를 대상으로 특정 기능을 수행하고 결과를 반환하는 특수한 기호
  • 연산자의 구분
    • 피연산자의 수에 따라 단항, 이항, 삼항으로 구분
    • 기능의 종류에 따라 산술, 관계, 비트, 논리, 대입, 기타 연산자로 구분
       
대입연산자
  •  대입 연산자는 이항 연산자로 = 기호를 기준으로 오른쪽 값을 왼쪽 기억 공간 (변수)에 저장하는 기능
    • ex) L value (변수) = R value (변수 or 상수)
    • 👉R value의 값을 변수에 할당하는 기능
    • 또다른 규칙 !
      • 👉이항 연산자의 주요 규칙 : 연산자를 기준으로 피연산자의 타입이 동일해야 한다!
      • 👉대입 연산자 또한 타입이 같아야 한다.
        •  ex) Long la = 10;
        • => 대입 연산자의 경우 R value의 기준으로 L value가 바뀜!! (중요)
        • 그러나 Long = 8byte , int = 4 byte 이므로 Long이 int로 변환되면 값의 손실이 일어남...
        • 그러므로 int n = la;  일때는 에러가 일어남. 
        •  la = la + 20;
        • => la (Long 타입 ) + 20 (int 타입)의 경우 두 타입이 같아야하는데 
        • 용량이 작은게 큰걸로 바뀜 즉, Long = 8byte , int = 4 byte 이므로 20 (int) -> 20 (Long) 으로 변환되어
        • 최종적으로 Long 타입이 반환 됨 
  • 대입 연산자는 산술 연산자와 함께 복합 연산자 형태로 사용 가능 

산술연산자, 관계연산자

  • 관계연산자는 결과를 반환하는 것이기때문에 boolean 타입을 반환함.

 

증감 연산자

  • 변수에 저장된 값을 증가 ++ 시키거나 또는 감소 -- 시키는 단항 연산자
  • 연산자를 정의하는 위치에 따라 연산이 수행되는 시점이 다르게 적용

 

논리 연산자

  • 논리 연산을 수행하는 연산자로 이항연산자인 AND (논리곱, &&), OR (논리합, ||) 연산자와 단항연산자인 NOT(논리부정,!)연산자가 있음. 
  • 피연산자와 연산의 결과 모두 boolean 형
  • 우선 순위는 NOT > ANd > OR
비트연산자 (Shift)

  • 정수형 피연산자에 대해 비트를 왼쪽, 혹은 오른쪽으로 이동시키는 연산자
삼항 연산자
  • 피연산자를 3개 갖는 연산자
  • 조건의 참, 거짓 여부의 따라 서로 다은 수식을 실행
    • ex) 조건? 수식1 : 수식 2
int x,y,z;
x = 10; y = 20;
z = ( x > y ? x : y ); // z =20
z = ( y > x ? x : y ); // z = 10

 

연산자 우선순위

  • 하나의 실행문에 다수의 연산자가 함께 사용될 경우 어떤 연산을 먼저 수행할지를 결정하는 것
  • 모든 연산자의 우선순위를 고려하여 사용하기 보다는 소괄호 () 연산자를 이용해 우선순위를 명확히 하기!
형변환 연산자 (casting)

  • Java에서의 형 변환은 두가지가 있음
    • Primitive 타입의 형변환
    • 객체 간의 형변환(상속)
  • <Primitive type의 형변환의 규칙>
    • 작은 데이터타입이 큰 타입으로 변환된다! (사진 참고)
      • 그러나! Long vs float 의 경우 float = 4 byte 이므로 Long으로 변환될 것 같지만 반대로
        Long 타입이 float 타입으로 변환되어 float 타입이 반환 된다
      • => float 타입이 표현할 수 있는 수의 범위가 Long 타입이 표현할 수 있는 수의 범위보다 훨씬 넓기 때문
  • 암묵적 형변환 (Implict Conversion)
    • Java는 데이터가 손실되지 않거나, 손실이 제한적인 범위 내에서 암묵적을 형을 변환함.
    • 자료형이 다른 변수에 값을 할당하는 경우 (float f = 10;)
    •  자료형이 다른 값을 연산하는 경우 (double d = 10.0 + 20;)
  •  명시적 형변환 (Explict Conversion)
    •  명시적으로 형 변환하는 것 = 캐스팅 casting
    •  자동 형 변환 규칙에 위배되는 상황임에도 강제로 형 변환 할 경우 데이터 손실의 위험이 있음.

int i1 = 20.5; //Error
int i2 = (int) 20.5; //20

 


2022.08.06 - [JAVA] - [JAVA] 연산자 / 연산자 우선순위

 

[JAVA] 연산자 / 연산자 우선순위

참고 블로그 + 프로그래머스 자바입문강의 연산자 사용법 설명 산술 연산자 ++ ++a, a++ 값을 하나 증가시킵니다.(전위, 후위 연산자) -- --a, a-- 값을 하나 감소시킵니다.(전위, 후위 연산자) + a + b 더

wearegolden.tistory.com

2022.08.06 - [JAVA] - [JAVA] 삼항연산자

 

[JAVA] 삼항연산자

알고리즘 풀 때 라던지 코드를 효과적으로 줄일 수 있는 방법 같다. 이해하는 건 시간이 조금 걸렸지만.. 참고블로그 정의 단순한 if문 (조건문)을 사용할 때에 코드를 획기적으로 줄일 수 있는

wearegolden.tistory.com