스터디/JAVA

섹션10. 메서드

nnhhmm 2024. 11. 7. 23:02

초급

문제1.  메서드의 반환 타입(return type)이란 무엇인가요? 왜 필요한가요?

메서드의 실행 결과 후 돌려주는 데이터 타입을 말한다. 필요한 이유는 컴파일 시점에 오류를 잡을 수 있고, 메서드가 어떤 종류의 결과를 반환하는지 한눈에 알기 쉽기때문이다.

문제2. 정수를 받아서 그 숫자가 양수인지 음수인지 출력하는 메서드 checkSign(int number)를 작성하세요. main 메서드에서 이 메서드를 호출하여 숫자를 확인해보세요.

public class MethodEx1 {
    public static void main(String[] args) {
        checkSign(2);
        checkSign(-7);
        checkSign(0);
    }
    public static void checkSign(int number){
        if(number>0){
            System.out.println(number+"는 양수입니다.");
        }else if(number<0){
            System.out.println(number+"는 음수입니다.");
        }else{
            System.out.println("입력한 숫자는 0입니다.");
        }
    }
}

문제3. 메서드 호출 시 값을 전달할 때 자바는 값에 의한 호출(call by value) 방식을 사용합니다. 이와 관련하여 값에 의한 호출이란 무엇인지 간단히 설명하세요.

메서드 호출 시 매개변수의 값이 복사되어 전달된다. 메서드 내부에서 값이 변경되어도 원본 값은 변하지 않는다.


중급

문제1. 메서드 오버로딩(Method Overloading)이란 무엇인가요? 오버로딩의 주요 장점을 한 가지 설명하세요.

메서드의 이름은 같으나 파라미터의 갯수나 다른 타입으로 정의하는 것, 같은 기능을 하는 메서드들을 같은 이름으로 할수있어서 코드의 가독성을 높여준다.

문제2. 다음 메서드를 작성하고 각 매개변수 타입에 따른 메서드 오버로딩을 적용하세요.

  • print(double value) : 주어진 double 값을 출력하는 메서드.
  • print(int value) : 주어진 int 값을 출력하는 메서드.
public static void print(double value){
        System.out.println("double형 "+value);
}

public static void print(int value){
        System.out.println("int형 "+value);
}

고급

문제1. 메서드와 형변환의 관계를 설명하고, 왜 자동 형변환이 불가능한 경우가 있는지 설명하세요. 예시를 포함해 주세요.

메서드의 매개변수에 선언된 타입보다 작은타입의 변수를 대입하면 자동형변환이 일어나지만, 

그 반대의 상황이 되면 명시적 형변환이 필요하다. 

public class MethodCasting1 {

    public static void main(String[] args) {
        double number = 1.5;
        printNumber((int) number);
    }
    public static void printNumber(int n){
        System.out.println("숫자: "+n);
    }
}

문제2. 두 개의 숫자를 받아 첫 번째 숫자에서 두 번째 숫자를 나눈 몫을 반환하는 divide(int num1, int num2) 메서드를 작성하세요. 단, 두 번째 숫자가 0일 경우 "Cannot divide by zero"라는 메시지를 출력하는 방식으로 예외 처리를 하세요.

public class MethodEx3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("두 정수를 입력하세요:");
        int num1 = scanner.nextInt();
        int num2 = scanner.nextInt();

        divide(num1, num2);
    }

    public static void divide(int num1, int num2) {
        if (num2 == 0) {
            System.out.println("Cannot divide by zero");
        }
        System.out.println(num1 + "/" + num2 + " = " + num1/num2);
    }
}

 

문제3. 문자열 두 개를 받아서 두 문자열이 같은지 여부를 확인하는 메서드 isEqual(String str1, String str2)를 작성하고, 메서드 오버로딩을 통해 추가적으로 대소문자를 구분하지 않고 비교하는 isEqualIgnoreCase(String str1, String str2) 메서드를 작성하세요.

    public static void isEqual(String str1, String str2){
        if(str1.equals(str2)){
            System.out.println("모든 문자열이 같습니다.");
        }else{
            System.out.println("다릅니다.");
        }
    }
    public static void isEqual(String str1, String str2, boolean ignoreCase){
        if(str1.equalsIgnoreCase(str2)){
            System.out.println("대소문자와 상관없이 같습니다.");
        }else{
            System.out.println("다릅니다.");
        }
    }

'스터디 > JAVA' 카테고리의 다른 글

자바 기본편 스터디 시작  (2) 2024.11.11
자바입문 스터디 후기  (2) 2024.11.08
섹션9. 배열  (1) 2024.11.06
섹션8. 훈련  (3) 2024.11.05
섹션7. 스코프, 형변환  (3) 2024.11.04