Java - Method

2023. 3. 28. 10:08개발/Java

Java 강의를 들으면서

알지 못했던 내용들을 따로 정리한다.


1. Method overloading

package Chapter_06;

public class _05_Overloading {

    public static int getPower(int number){
        int result = number * number;
        return result;
    }

    public static int getPower(String strNumber){
        int number=Integer.parseInt(strNumber);
        return number*number;
    }

    public static int getPower(int number, int exponent){
        int result = 1;
        for (int i = 0; i < exponent; i++) {
            result *= number;
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(getPower(3));
        System.out.println(getPower("4"));
        System.out.println(getPower(3,3));
    }
}

 

아두이노 혹은 typescript 에서는 

같은 이름의 메소드를 사용하면

중복오류가 발생하는데

 

Java는 신기하게

중복된 이름의 메소드가 있어도

전달값의 형태가 다르면 사용할 수 있다.

    public static int getPower(int number){
        int result = number * number;
        return result;
    }

    public static int getPower(String strNumber){
        int number=Integer.parseInt(strNumber);
        return number*number;
    }

위와 같이 같은 getPower() 메소드여도

괄호 안에서 각각 int 형과 String 형을 전달하므로

중복 호출할 수 있다.


불가능한 경우

    public static int getPower(int number){
        int result = number * number;
        return result;
    }
    public static int getPower(int number){
        int result = number * number;
        return result;
    }

위와 같이 중복된 이름의 Method를 선언해도

같은 자료형 전달값이 사용되면

오류가 발생한다.

이미 int형 전달값 getPower 메소드는

정의되어 있다는 오류 문구가 발생한다.


2. main method 전달값 활용

package Chapter_06;

public class _08_MainMethod {
    public static void main(String[] args) {
        for (String s : args) {
            System.out.println(s);
        }

        //1. 도서 조회
        //2. 도서 대출
        //3. 도서 반납
        if(args.length==1){
            switch(args[0]){
                case "1":
                    System.out.println("도서 조회 메뉴입니다.");
                    break;
                case "2":
                    System.out.println("도서 대출 메뉴입니다.");
                    break;
                case "3":
                    System.out.println("도서 반납 메뉴입니다.");
                    break;
                default:
                    System.out.println("잘못 입력하셨습니다.");
            }
        }
        else{
            System.out.println("사용법) 1~3 메뉴 중 하나를 입력하세요.");
        }
    }
}

위와 같이 main() 메소드에서

기본 전달값( 위 main에서는 String [] args )을 다루는 방법

1. 우측 상단의 Edit Configurations 클릭

2. (1)에서 프로젝트 파일을 선택해준 뒤

(2) 에서 전달할 String 값을 선언

3. 프로젝트를 실행하면

설정해둔 1 값이 자동으로 main()에 전달됨

        if(args.length==1){
            switch(args[0]){
                case "1":
                    System.out.println("도서 조회 메뉴입니다.");
                    break;
                case "2":
                    System.out.println("도서 대출 메뉴입니다.");
                    break;
                case "3":
                    System.out.println("도서 반납 메뉴입니다.");
                    break;
                default:
                    System.out.println("잘못 입력하셨습니다.");
            }
        }

위 구문에서 args의 크기가 1일 때

"1" 값이 전달됐으므로

case 1 이 정상적으로 동작하는 모습


main 메소드에서

다양한 전달값을 활용해서

함수를 테스트하고 싶을 때

유용하게 쓰일 것 같다.

 

아두이노 혹은 vsCode 에서 typescript를 다루는 경우

이런 테스트를 하기 위해서는

직접 업로드한 뒤 전체 프로그램을 돌리고

눈으로 확인했어야 하는데

 

간단하게 전달값을 테스트할 수 있어서

좋아보인다.


3. method 활용 퀴즈

 

위와 같이 실행결과가 나오도록

Method 활용해서 코드 작성

package Chapter_06;

public class _Quiz_06 {
    public static String getHiddenData(String data,int number){
        String addData = "";
        String editData = data.substring(0,number);
        for (int i = 0; i < data.length()-editData.length(); i++) {
            addData +="*";
        }
        editData += addData;
        return editData;
    }

    public static void main(String[] args) {
        String name = "홍길동";
        String id = "990130-1234567";
        String phone = "010-1234-5678";

        System.out.println("이름 : "+getHiddenData(name,1));
        System.out.println("주민등록번호 : "+getHiddenData(id,8));
        System.out.println("전화번호 : "+getHiddenData(phone,9));
    }
}

난이도 낮은 퀴즈라서

막힘 없이 진행했다.

 

원하는 데이터 크기만큼 자른 뒤

자르고 남은 index크기만큼을

* 로 대체하면 되는 퀴즈였다.


6강 완강 후 

사실 chatGPT가 나와서

이런 기본 문법 강의는 

가치가 떨어졌다고 생각한다.

 

중후반 커리큘럼까지 빨리 수강해서

나에게 필요한 강의가 무엇인지 찾고

새로운 강의를 또 구매하고싶다.

 

Java를 활용해서

직접 나만의 서버를 구현하는 강의라던가

Java를 활용해서 Android에서 앱을 제작한다던가

 

그런 실무적인 강의를 구매하고싶다.

일단 이 20시간 강의부터 완강하고 나서 생각

 

'개발 > Java' 카테고리의 다른 글

Java 기본  (0) 2023.03.28