강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

sy k님의 프로필 이미지
sy k

작성한 질문수

boolean의 return

작성

·

26

·

수정됨

0

안녕하세요! 접근제어자 강의 중 BankAccount를 클래스를 만들어 활용하는 내용입니다. 입금 & 출금 메서드를 만들고 있고, -100원이나 0원처럼 부적절한 금액이 입금되지 않도록 private boolean isAmountValid를 활용하여 amount>0인지 확인하는 중입니다.

이해가 잘 안 가는 부분이: isAmountValid는 반환값이 boolean이니 return amount > 0이면 true가 반환되는 것인가요? if(true)이면 그냥 무한반복 아닌가요? 만약에 amount가 0보다 작으면 boolean이 false로 반환되나요, 아니면 아예 return amount > 0 에 해당되지 않아서 값을 반환하지 않는 건가요?

boolean이 너무 헷갈려서 질문을 잘 한 것인지 조차 모르겠네요.. 헷갈리신다면 죄송합니다.

package access;

public class BankAccount {

    private int balance;

    public BankAccount() { //어차피 초기값 0이어서 없어도 되는데 public 사용해보려고
        balance = 0;
    }

    //public 메서드: deposit
    public void deposit(int amount) {
        if (isAmountValid(amount)) { //isAmoutnValid(amount) = true 라고 왜 표기를 안 해도 되지?
            balance += amount;
        } else {
            System.out.println("유효하지 않은 금액입니다.");
        }
    }
    private boolean isAmountValid(int amount) { //정상적인 금액 입력됐는지 검증하는 로직. 내부에서만 쓸 거임.
        //금액이 0보다 커야함
        return amount > 0; //반환값이 boolean이므로 true/false가 반환됨.
    }
}

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

sy k님, 질문 주신 내용에 대해 설명드리겠습니다.

isAmountValid 메서드는 amount > 0라는 조건에 대해 boolean 값을 반환하는 방식으로 설계되어 있습니다.
즉, 이 메서드는 전달받은 amount 값이 0보다 크면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

  • return amount > 0; 구문에서 amount > 0 표현식은 amount가 0보다 큰지 확인하여 결과를 boolean으로 반환합니다. 따라서, return 키워드에 의해 메서드의 결과로 true 또는 false가 반환됩니다.
  • 이 반환 결과를 활용하여 deposit 메서드 안에 있는 if (isAmountValid(amount)) 구문은 isAmountValid(amount)true일 때만 실행됩니다. 따라서, amount가 0보다 클 때만 해당 코드 블록 내부의 balance += amount;가 실행되어 입금됩니다.
  • 만약 amount가 0보다 작거나 같다면, isAmountValid(amount)false를 반환하게 됩니다. 이 경우 else문의 “유효하지 않은 금액입니다.” 출력문이 실행됩니다.

잘 이해가 가지 않으셨다면 추가로 질문해 주세요! 필요한 만큼 설명 드리겠습니다. 😊

추가 정보는 Spring Data JDBC의 Transactional Query Methods 문서를 참고하실 수 있습니다.

sy k님의 프로필 이미지
sy k

작성한 질문수

질문하기