ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] operator and conditional statement
    언어/Java 2024. 10. 24. 09:53

    아래 내용은 인프런 김영한의 "자바 입문 코드로 시작하는 자바 첫걸음" 강의 중 연산자, 조건문 섹션에서 자세히 보실 수 있습니다. 

    https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8

    연산자(operator)

    • 연산자는 operator
    • 피연산자는 operand
      • 피연산자가 operand 였구나. 하고 놀랬다. 명령어는 연산 코드와 오퍼랜드로 이루어져 있기 때문에
      • 오퍼랜드가 피연산자 즉, 데이터일 수도 있고 데이터가 있는 주소를 가리킬 수도 있어 재밌었다.
    • 연산자 우선 순위
    int sum = 2 * 3 + 4 * 5;
    sout(sum);
    • sout은 System.out.printl(sum); 이렇게 생략하겠다.
    • 위 소스 코드에서 컴퓨터 과학의 지식을 빼고 어렸을 때 배운 수학만 생각하더라도
    • (2 * 3) + (4 * 5) 즉, 2번의 곱셈을 먼저하고 나온 두 값을 더하는 것을 알 수 있다.
    • 연산자의 우선 순위는 우리의 상식선상에서 하면 된다. 
    • 외우지 말고 헷갈릴 때면 찾아보자. 
    • 그리고 2 * 3 + 4 * 5 를 해도 26, (2 * 3) + (4 * 5) 해도 26 이라는 같은 결과가 나온다.
    • 코드를 몇 자 줄여서 모호하거나 복잡해 지는 것보다는 코드가 더 많더라도 명확하고 단순한 것이 더 유지보수와 가독성에 좋다. -> 같이 개발하자나요? or 나중에 볼 때 스스로도 무슨 의민지 생각해보게 된다.
    • 따라서 한 눈에 볼 때 이해하기 어려울 수도 아니면 헷갈릴 거 같다 싶으면 ()를 충분히 써주자.

    증감 연산자 

    전위 증감연산자

    int a = 1;
    int b = 0;
    b = ++a;
    sout(b);
    sout(a);
    • 여기서 b 의 값은 a에 1을 더하고 b에 대입한다.
    • 다시 말해 a = a + 1를 한 뒤
      • a = 1 + 1, a = 2가 된다.
    • b = a를 대입한다. 
    • 따라서 출력은 b = 2, a = 2가 될 것

    후위 증감연산자

    int a = 1;
    int b = 0;
    b = a++;  // 다른 걸 먼저(대입) 하고 더한다. 
    sout(a);
    sout(b);
    • 여기서  b = a을 먼저 대입한다.
    • 후에 a에 1을 더한다.
    • 다시 말해 
    • b = a
    • a = a + 1 
    • 따라서 출력은 a = 2, b = 1 이 될 것

    전위, 후위 증감 연산자의 종류에 상관없이 "단독"으로 쓰이면 자기 자신 밖에 없기 때문에 값만 증가해서 결과는 같다.

     

    문자열 비교

    • 문자열은 ==가 아니라  .equals 를 사용해야 된다. 
    package operator;
    
    public class Comp2 {
    
        public static void main(String[] args) {
            String str1 = "문자열1";
            String str2 = "문자열2";
    
            boolean result1 = "hello".equals("hello"); //리터럴 비교
            boolean result2 = str1.equals("문자열1");//문자열 변수, 리터럴 비교
            boolean result3 = str1.equals(str2);//문자열 변수 비교
    
            System.out.println(result1);
            System.out.println(result2);
            System.out.println(result3);
        }
    }
    • 그 이유는 나중에 자세히 나온다고 한다.

    Tip) 문장의 중간 쯤에 문장을 완성 시켜주는 단축키 <- 설명이 조금 이상하지만, 직접 써보면 아 이런 의미구나 이해할 수 있다.

    ctrl + shift + enter

     

    조건문

    • if 문은 else if, else 로 구별해서 ~가 아닐 때 ~라면 등등 으로 사용할 수 있다.
    • 하지만 if문을 따로 사용할 때가 있다. 서로 독립적일 때가 그렇다.
    • 예를 들어 
    • 아이템의 가격이 만원 이상이면 천원 할인 
    • 나이가 10살 이하면 1000원 할인
    • 만일 하나의 if-else 문을 사용하게 되면 중복해서 할인을 받을 수 없다는 의도가 된다.
    • 만약 중복을 의도 한 것이라면 if문을 2개를 사용해서 독립적으로 만들어주자.

    if문이 1개의 라인을 가질 때

    if (true)
    	System.out.println("할인 없음");
    • 블록 {} 이 생략 가능하다.
    • 하지만 유지보수를 위해 1개의 라인만 가지더라도 {}를 사용해주자. 
    • 그 이유는 아래 소스코드를 먼저 보자
    if (true)
    	System.out.println("할인 없음");
    	System.out.println("할인 없음");
    • 만일 프로그래머가 if가 true 일 떄 아래 두 문장을 출력하도록 의도한 것이라면, 실패한다
    • 두 번째 출력문은 if문과 상관 없이 출력된다. 아래 소스 코드와 동일한 의미를 갖는다.
    if (true)
    	System.out.println("할인 없음");
    
    System.out.println("할인 없음");

     

    swicth 문

    package cond;
    
    public class Switch3 {
    
        public static void main(String[] args) {
            int grade = 2;
    
            int coupon;
            switch (2) {
                case 1:
                    coupon = 1000;
                    break;
                case 2:
                case 3:
                    coupon = 3000;
                    break;
                default:
                    coupon = 500;
            }
            System.out.println("발급받은 쿠폰 " + coupon);
        }
    }
    • case문에는 break가 들어간다. 
    • 만일 없을 시 case 2에 가도 break 가 없으니 break를 만나는 case3 가 출력될 것
    • 여기서는 출력의 결과가 3000 이 나올 것이다.

    Java14 switch문의 진화

    package cond;
    
    public class Switch4 {
    
        public static void main(String[] args) {
            int grade = 2;
    
            int coupon = switch (grade) {
                case 1 -> 1000;
                case 2 -> 2000;
                case 3 -> 3000;
                default ->  500;
            };
            System.out.println("발급받은 쿠폰 " + coupon);
        }
    }

     여기서는 int coupon에 switch 문을 대입해버린다. 

Designed by Tistory.