-
[Java] operator and conditional statement언어/Java 2024. 10. 24. 09:53
아래 내용은 인프런 김영한의 "자바 입문 코드로 시작하는 자바 첫걸음" 강의 중 연산자, 조건문 섹션에서 자세히 보실 수 있습니다.
연산자(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 문을 대입해버린다.
'언어 > Java' 카테고리의 다른 글
[Java] 반환타입, 메서드 오버로딩 (0) 2024.10.30 [Java] 메서드 (feat. 인수 != 매개변수) (2) 2024.10.29 [Java] 배열, 향상된 for문 (0) 2024.10.28 [Java] 형 변환, 계산과 형 변환, 스캐너 (0) 2024.10.26 [Java] variable (1) 2024.10.23