자바의 정석 (3) 연산자

Lee DoYeon·2024년 10월 13일
0

자바의 정석

목록 보기
3/3
post-thumbnail

목표

자바가 제공하는 다양한 연산자를 학습하세요.

학습할 것

  • 산술 연산자
    • 산술 연산자는 산술이라는 의미 그대로 수학적인 계산에 사용되는 연산자. 덧셈, 뺄셈, 곱셉, 나눗셈 등의 수학적 기호 연산자를 뜻한다.
  • 비트 연산자
    • 비트 연산자는 피 연산자를 비트단위로 연산하는데, 피 연산자를 이진수로 표현했을 때의 각 자리를 규칙에 따라 연산을 수행하며, 피연산자로 실수는 허용하지 않으며 정수만 허용된다.
    1. | (OR연산자): 피연산자 중 한 쪽의 값이 1이면, 1을 결과로 얻는다. 그 외에는 0을 얻는다. 주로 특정 비트의 값을 변경할 때 사용한다.
    2. & (AND연산자): 피연산자 양 쪽이 모두 1일때만 1을 결과로 얻는다. 그외에는 0을 얻는다. 주로 특정 비트의 값을 추출할 때 사용한다.
    3. ^ (XOR연산자): 피연산자의 값이 서로 다를때만 1을 결과로 얻는다. 그외에는 0을 얻는다. 같은 값으로 두고 XOR 연산을 수행하면 원래값으로 돌아오기에 간단한 암호화에 사용한다.
  • 관계 연산자
    • 주로 조건문과 반복문의 조건식에 사용되며, 연산결과는 오직 true와 false 둘 중의 하나이다.
    1. 대소비교 연산자 < > = ≤ ≥
    2. 등가비교 연산자 == ≠
  • 논리 연산자
    • 논리 연산자는 위 연산자들을 사용한 각각의 조건들을 이어줄 수 있는 역할을 한다. && || !
  • instanceof
    • 참조변수의 실제 타입을 알아보기 위해 사용한다.
    • 참조변수 instanceof 타입(클래스)
    • 반환타입은 Boolean이며 반환 값이 true일 경우 참조 변수가 검사한 타입으로 형변환이 가능하다는 의미가 된다.
    • 이는 조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있기 때문에, 참조변수의 타입과 인스턴스 타입이 항상 같지는 않다는 점을 기억한다면, instanceof 연산자를 이용해 참조변수 c가 가리키고 있는 인스턴스의 타입을 확인 후 적절히 형변환할 수 있다.
    • 그렇다면 상속받은 자손 클래스의 인스턴스를 조상 타입의 참조변수로 사용하는 이유는 무엇일까?
      • 다형성을 활용하기 위함
      • 하나의 타입(조상 클래스 또는 인터페이스)이 여러 형태의 객체를 참조할 수 있는 능력을 의미. 이를 통해 다양한 객체라 동일한 방식으로 처리 가능.
        class Animal {
            void sound() {
                System.out.println("Animal makes a sound");
            }
        }
        
        class Dog extends Animal {
            @Override
            void sound() {
                System.out.println("Dog barks");
            }
        }
        
        class Cat extends Animal {
            @Override
            void sound() {
                System.out.println("Cat meows");
            }
        }
        
        public class Main {
            public static void main(String[] args) {
                Animal myDog = new Dog();  // 조상 타입(Animal)의 참조변수로 자손 인스턴스를 참조
                Animal myCat = new Cat();  // 조상 타입(Animal)의 참조변수로 자손 인스턴스를 참조
        
                myDog.sound();  // "Dog barks" 출력
                myCat.sound();  // "Cat meows" 출력
            }
        }
        
      • 조상 클래스의 타입으로 자손 클래스 인스턴스를 참조하는 이유는 같은 메서드를 호출하더라도 자손 클래스에서 overriding한 메서드가 실행되기 때문이다.
  • assignment(=) operator
    • 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다.
  • 화살표(->) 연산자
    • 메서드를 하나의 식으로 표현한 것.
  • 3항 연산자
  • 연산자 우선 순위
  • (optional) Java 13. switch 연산자
profile
I can do this all day

0개의 댓글