본문 바로가기
  • soobinhand의 기술 블로그
도서/자바 프로그래밍 언어 - James Gosling

[자바 프로그래밍 언어] 9장 연산자와 표현식

by soobinhand 2021. 12. 28.
728x90

9.1     산술 연산

  • +
  • -
  • *
  • /
  • %
  • 정수 나눗셈은 실수 부분을 잘라버린다. 7/2 = 3이다.
  • 0으로 나누거나 0으로 나머지를 구하는 것은 ArithmeticException을 발생시킨다.
  • NaN - Not a Number 숫자가 아님을 의미.
  • 부동 소수점 산술 연산은 엄격한 방식과 비엄격한 방식 중 하나로 실행. 엄격한 부동 소수점 코드를 실행하면 모든 자바 가상 머신에서 정확히 동일한 결과를 얻을 수 있다. 하지만 비엄격은 규칙이 느슨하게 적용된다.
  • 비엄격은 float나 double이 허용할 수 있는 범위보다 큰 값을 가지는 표현식의 중간 결과를 허용한다.

9.2     일반 연산자

  • ++i는 i의 값을 미리 증가시켜 17로 만든 후에 값을 사용함.
  • i++은 i의 현재 값을 사용한 후에 증가시킴.
  • 등호 연산자는 참조의 동일성을 검사하는 것이지 객체의 동등성을 검사하는 것이 아니다. 두 참조가 동일한 객체를 가리킨다면 동일한 것이다. 두 객체가 논리적으로 동일한 값을 가졌다면 동등한 것이다.
  • instanceof 연산자는 지정된 참조가 특정 클래스나 인터페이스의 인스턴스를 나타내는지를 평가한다. 표현식에서 왼쪽에는 객체의 참조가 오고 오른쪽에는 클래스나 인터페이스의 이름이 온다.
  • +연산자는 피연산자 중 하나라도 String이라면 문자열 연결 연산자로 해석한다.
  • new 연산자는 연산자 다음에 한 개의 피연산자만 나온다. 기술적으로 new를 사용한 표현식을 인스턴스 생성 표현식이라고 부른다. 왜냐하면 이 연산자는 클래스나 배열의 인스턴스를 생성하기 때문이다.

9.3     표현식

  • 없음

9.4     타입 변환

  • 자바는 타입 검사를 엄격하게 한다.
  • 어떤 경우에는 작업을 하지 않아도 자동으로 변환이 된다. 이러한 경우를 묵시적 변환이라고 한다.
  • 묵시적 확장 변환은 정수 타입을 부동 소수점 타입으로 변환하는 용도로는 사용할 수 있지만 반대의 경우에는 사용할 수 없다. 부동 소수점 타입이 어떤 정수 타입의 범위보다 크기 때문이다.
  • 크기를 유지하는 것이 값의 정밀도를 유지하는 것이라고는 말할 수 없다.
  • 편의상 정수 타입의 상수는 컴파일 시에 캐스트를 하지 않아도 더 작은 범위의 정수 타입에 대입 가능.
  • 적어도 한 개의 String 피연산자가 있다면 + 는 문자열 연결 연산자로 해석된다. 그리고 나머지 피연산자가 String이 아니라면 피연산자는 묵시적으로 String으로 변환된다.

9.5     연산자 우선순위와 결합성

  • 연산자 우선순위는 연산자와 매우 밀접한 관계에 있다. 

9.6     멤버 접근

  • 정적 멤버는 타입 이름이나 객체 참조를 사용해서 접근할 수 있다. 타입 이름을 사용하는 경우, 참조 멤버는 해당 타입에 선언된 멤버다. 객체 참조를 사용하는 경우, 참조되고 있는 객체 타입이 아니라 선언된 참조 타입에 의해 접근할 수 있는 멤버가 정해진다. 클래스 내에서 정적 멤버에 대한 참조는 항상 클래스 내부에 선언된 멤버나 상속된 멤버를 가리킨다.
  • 비정적 멤버는 객체 참조를 통해 접근된다. 이 참조는 명시적 참조 또는 묵시적 this가 될 수 있다. 묵시적 this는 비정적 멤버가 현재 객체의 멤버일 경우에 해당된다. 필드와 중첩 타입은 선언된 객체 참조 타입에 기반하여 접근된다.
728x90

댓글