자바의 정석 ch03. 연산자

yuju9·2022년 1월 10일
0

1. 연산자

연산자와 피연산자

  • 연산자: 연산을 수행하는 기호
  • 피연산자: 연산자의 작업 대상(변수, 상수, 리터럴, 수식)

연산자의 종류

종류연산자설명
산술 연산자+ - * / % << >> 사칙연산과 나머지 연산(%)
비교 연산자> < >= <= == !=크고 작음과, 같고 다름을 비교
논리 연산자&& ! & ^ ~ 그리고(AND)와 또는(OR)으로 조건을 연결
대입 연산자=우변의 값을 좌변에 저장
논리 연산자(type) ?: instanceof형변환 연산자, 삼항 연산자, instanceof연산자

연산자의 우선순위

  1. 산술>비교>논리>대입. 대입은 제일 마지막에 수행
  2. 단항(1)>이항(2)>삼항(3). 단항 연산자의 우선순위가 이항 연산자보다 높다.
  3. 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽(→)이다.

산술 변환

  1. 두 연산자의 타입을 갖게 일치 (보다 큰 타입으로 일치)
    long + int → long + long → long
    float + int → float + float → float
    double + float → double + double → double
  2. 피연산자의 타입이 int보다 작은 타입이면 int로 변환
    byte + int → int + int → int
    char + short → int + int → int


2. 단항 연산자

  • 증가 연산자(++): 피연산자의 값을 1 증가시킴
/*1. 전위형*/
j = ++i;
//증가 후에(++i;), 참조하여 대입(j = i;)

/*2. 후위형*/
j = i++;
//참조하여 대입 후에(j = i;), 증가(i++;)
  • 감소 연산자(--): 피연산자의 값을 1 감소시킴


3. 산술 연산자

  • 피연산자가 정수형인 경우, 나누는 수로 0을 사용할 수 없다.
  • 두 피연산자가 모두 int타입인 경우, 나누기 연산 결과는 int타입이다. int타입은 소수점을 저장하지 못하므로 정수만 남고 소수점 이하는 버려진다.
int a = 10;
int b = 4;

System.out.printf("%d / %d = %d%n", a, b, a / b);
// 10 / 4 = 2 (int / int = int)
  • 올바른 연산결과를 얻기 위해서는 두 피연산자 중 어느 한 쪽을 실수형으로 형변환 해야한다.
int a = 10;
int b = 4;

System.out.printf("%d / %f = %f%n", a, (float)b, a / (float)b);
// 10 / 4.000000 = 2.500000 (int / float = float)



4. 비교 연산자

비교연산자연산결과
>좌변 값이 크면, true 아니면 false
<좌변 값이 작으면, true 아니면 false
>=좌변 값이 크거나 같으면, true 아니면 false
<=좌변 값이 작거나 같으면, true 아니면 false
==두 값이 같으면, true 아니면 false
!=두 값이 다르면, true 아니면 false

문자열 비교

  • equals(): 두 문자열을 비교할 때, 비교 연산자 '==' 대신 사용하는 메서드
    equals는 객체가 달라도 내용이 같으면 true를 반환한다.
String str1 = "abc";
String str2 = new String("abc");
System.out.printf("str1.equals(\"abc\")? %b%n", str1.equals("abc"));
System.out.printf("str2.equals(\"abc\")? %b%n", str2.equals("abc"));
//str1.equals("abc")? true
//str2.equals("abc")? true



5. 논리 연산자

논리 연산자

  • || (OR 결합): 피연산자 중 어느 한 쪽만 true면 true를 결과로 얻음
  • && (AND 결합): 피연산자 양쪽 모두 true이어야 true를 결과로 얻음
  • ! (논리 부정 연산자): 피연산자가 true면 false를, false면 true를 결과로 반환

비트 연산자

  • | (OR 연산자): 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻음. 그 외에는 0을 얻음
  • & (AND 연산자): 피연산자 양 쪽이 모두 1이어야만 1을 결과로 얻음. 그 외에는 0을 얻음
  • ^ (XOR 연산자): 피연산자의 값이 서로 다를 때만 1을 결과로 얻음. 같을 때는 0을 얻음
  • ~ (비트 전환 연산자): 피연산자를 2진수로 표현했을 때, 0은 1로, 1은 0으로 바꾼다.


6. 그 외의 연산자

조건 연산자 ?:

조건식 ? 식1 : 식2

result = (x > y) ? x : y;

x > y 결과가 true이면, 변수 result에는 x의 값이 저장되고, false이면 y의 값이 저장된다.

대입 연산자 = op=

  • 대입 연산자: 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용됨
x = y = 3;

      y = 3이 먼저 수행되고, 그 다음에 x = y가 수행됨

  • 복합대입 연산자 (+=, -=, +=, %= 등)

0개의 댓글

관련 채용 정보