💡 해당 글은 『자바의 신 3판』을 복습하며 도서의 내용과 본인의 주관적인 생각을 정리한 글입니다.
☁️ 내용정리
for
int i = 1;
for (; i <= 10; i++) {
System.out.println(i);
}
System.out.println(i);
for문은 이렇게 for문 외부에 존재하는 변수를 증감하며 사용할 수도 있다.
해당 방법은 가독성이 좀 떨어진다고 생각해서 코드가 아주 살짝 추가되더라도
int finalNumber = 0;
for (int i = 1; i <= 10; i++) {
System.out.println(i);
if (i == 10) {
finalNumber = i;
}
}
System.out.println(finalNumber);
이런식으로 구현할 것 같기는 하다.
continue
반복문에서 continue 키워드를 사용하면 해당 루프를 건너뛸 수 있다.
필자는 지금까지 continue 키워드 다음 줄에 해당하는 코드만 건너 뛰는 줄 알았다;;;
Label
반복문에서 사용할 수 있는 Label이라는 것이 있다.
반복문에 Label이라는 이름을 붙이고 이름을 통해 제어할 수 있다.
public static void main(String[] args) {
ALabel: // 라벨 붙이기
for (int i = 1; i < 10; i++) {
for (int j = 1; j < 10; j++) {
if (j == 3) continue ALabel;
System.out.print(i + "*" + j + "=" + i*j + " ");
}
System.out.println();
}
}
이렇게 간단한 구구단 코드를 작성하면 i * 3
에서 제일 밖에 있는 반복문의 루프가 건너뛰어지기 때문에 1 ~ 9
까지의 숫자를 2까지만 곱한 결과를 출력하고 종료한다.
나는 지금까지 코딩하면서 한번도 써본적이 없긴 하다.
☁️ 내 생각
early return, break
나는 개발을 처음 배웠을 때부터 if-else
구조가 마음에 안들었다. 미관상 좋지 않다는 이유였다.
근데 if-else
구조를 사용하지 않고 코드를 설계할 방법을 몰랐다. 이런 것들이 하나 둘 모이고 해결하지 않다보니 자연스럽게 개발과 멀어졌던 것 같다.
int a = 10;
if (a > 5) {
System.out.println("bigger than 5");
} else {
System.out.println("else");
}
if-else
를 타고타고타고 끊임 없이 들어가다 보면 진짜 개판인 코드가 작성되곤 했다.
if (동물입니까?) {
if (포유류입니까?) {
} else {
}
} else if (식물입니까?) {
}
대학교 1학년 시절에 이런식으로 코드를 짰던 기억이 있다.
이런 경우에는 조건을 메서드로 분리하고, elary-return, break를 사용하는 것이 가독성에 좋다.
메서드에서 if 문의 조건을 충족했을 때, 메서드의 핵심 로직이 동작하게끔 한다면 가독성이 떨어지고, 메서드의 이름으로 메서드의 동작을 전달하기 힘들 것이라고 생각한다.
'JAVA > 자바의 신' 카테고리의 다른 글
8장. 참조 자료형에 대해서 자세히 알아봅시다. (1) | 2024.01.05 |
---|---|
7장. 여러 데이터를 하나에 넣을 수는 없을까요? (0) | 2024.01.04 |
5장. 계산을 하고 싶어요 (1) | 2024.01.04 |
4장. 정보를 어디에 넣고 싶은데 (1) | 2024.01.04 |
3장. 자바를 제대로 알려면 객체가 무엇인지를 알아야 해요 (0) | 2024.01.03 |