본문 바로가기

Language/Java

3. 연산자

연산과 관련된 용어들

연산(Operation)

  1. 식이 나타낸 일정한 규칙에 따라 계산함,
  2. 공집합이 아닌 집합에서, 그 집합에 속하는 임의의 두 원소로부터 제3의 원소를 만듦

연산자(Operator): 연산을 기호화 한것

+,-.*,/

피연산자(Operand): 연산의 대상이 되는 것

a+b //a,b가 연산자이다.

표현식(Expression): 연산된 결과를 변수나 상수에 저장하는 것

c = a+b

위에서 아래 순으로 연산자의 우선순위를 나타낸다.

연산자의 우선순위는 대체적으로 수학과 비슷함으로 수학적으로 사고해야한다.

(출처https://triangle.academy/course/java/course/java-basics/p/3)

산술 연산자(arithmetic)

boolean 타입을 제외한 모든 Primitive Type에 가능하다

+,-,*,/,%, -(음수 변환(unary minus))

비트 연산자(bitwiss)

비트단위의 연산을 할 때 사용한다

두개의 비트 문자열 객체가 있다고 가정 할 때 == 연산자를 사용안하고 XOR로 비교 하거나

단정도, 배정도등 부동 소수점에서 쉬프트 연산 시 사용이 되거나
음수를 표현하기 위해서 보수를 사용하는 차원으로 많이 쓰인다.

~, |, ^, & >>, <<, -(보수)

관계 연산자(relational)

두 피연산자가 같거나 다른지 비교 하기 위해서 사용한다

==,!=, <. >, !, ^

논리 연산자(Boolean)

조건부 연산자가 1개, 2개일 때 차이는

두개일 시 (short circuit evaluation) : 만족되는 조건이 있으면 바로 종료하고 결과를 리턴

하나일 시: 모든 값을 비교한다.

&& 연산자는 False 값을 우선, True 값을 나중에 찾는다.

|| 연산자는 True 값을 우선, Falsㄷ 값을 나중에 찾는다.

&, &&, |, ||

instanceof

객체의 타입을 확인 하는 메서드

"aaa" instanceof String // true

객체의 타입 변경이 일어나는 환경에서 사용됨

근데 그럴 일은 강타입 객체에서 잘 일어나지 않는다

할당 연산자(Assignment)

객체의 값을 할당하는 연산자로서

표현은 두가지 케이스로 나뉜다.

int a = 1 // 선언과 초기화
a = 1 // 할당

화살표 연산자(Lambda Expression)

Java 8에서 추가 된 람다 함수

함수형 프로그램에서 가져온 개념

객체 = (인자) -> {return} 
// {}부분이 한 문장일때 중괄호 생략가능 
Person a =(a,b) -> return true;
// 바로 객체에 할당할때
Person a =(a,b) ->{
    System.out.println("a");
    System.out.println("b");
    return true;
};
// 객체 생성후 선언시
Person a = new Person();
a.hi((a,b) ->{
    System.out.println("a");
    System.out.println("b");
    return true;
});

3항 연산자(Conditional)

조건 ? true : false
if 평가문 ? if 결과 : else 결과  
public int compare(int x, int y) { return x > y ? x : y; }

연산자 우선 순위

최우선연산자 ( ., [], () )

단항연산자 ( ++,--,!,~,+/-   : 부정, bit변환>부호>증감)

산술연산자 ( *,/,%,+,-,shift) < 시프트연산자 ( >>,<<,>>> ) >

비교연산자 ( >,<,>=,<=,==,!= )

비트연산자 ( &,|,,~ )

논리연산자 (&& , || , !)

삼항연산자 (조건식) ? :

대입연산자 =,*=,/=,%=,+=,-=

연산자 우선순위는 수학과 비슷하다.

위의 최우선 연산자를 봐도 알겠지만 "."이 최우선이다 (실수 표현이 최우선)

그래서 연산자들을 () 묶어 주면서 연산자를 사용 시

  1. 가독성
  2. 계산 오류 방지
  3. 의도치 않은 오류

를 방지 할 수 있다.

(Java 13) switch 연산자

swich-case문과같다

데이터 타입의 Enum 처럼 열거형식의 조건문

boolean b;
swich (a) {
    case "a":
        b = true;
    case "b":
        b = false;
}

'Language > Java' 카테고리의 다른 글

4. 문(statement)  (0) 2020.12.12
다시 복습하는 자바 - 2.자바 데이터 타입, 변수 그리고 배열  (0) 2020.11.21