https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gngh0101&logNo=222396980468&proxyReferer=
이후 많은 Java version이 나왔지만, LTS가 아니라 사용하기에는 부적절하였다.
하지만 곧... Java 17 LTS version이 등장한다. (하지만 또.. LTS로 나오지 않을 수도 있다.)



Statement는 작업을 '수행'하는 모든 문장, 코드를 말하고
Expression은 ‘수식’이라는 뜻으로 값을 표현(reduce), 산출해내는 코드를 말한다.


int a = 10 / int b = 10의 경우가 Statement이다. System.out.println()의 파라미터로 전달할 수 없다.
자바의 경우는 Statement 자체로 코드를 나타낼 수 없고, 에러가 발생한다.
int classic(int input) { int result = 0; switch (input) { case 1: case 2: result = 1; break; case 3: case 4: result = 2; break; default: result = 3; break; } return result; }
int getValue(final Day day) { switch (day) { case MONDAY: return 1; case FRIDAY: return 2; case WEDNESDAY: return 3; case THURSDAY: return 4; default: return -1; } }
int getValueByClassic(int input) { return switch (input) { case 1, 2 -> 1; case 3, 4 -> 2; default -> 3; }; }
int getValue(int input) { final int result = switch (input) { case 1, 2: yield 1; case 3, 4: yield 2; default: yield 3; }; return result; }
public class LegacyPerson { private final String name; private final Integer age; @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } LegacyPerson that = (LegacyPerson) o; return name.equals(that.name) && age.equals(that.age); } @Override public int hashCode() { return Objects.hash(name, age); } public LegacyPerson(String name, Integer age) { this.name = name; this.age = age; } public String getName() { return name; } public Integer getAge() { return age; } }
