천천히 빛나는

Java 기초 : 메소드와 API 본문

JAVA/JAVA

Java 기초 : 메소드와 API

까만콩 •ᴥ• 2023. 7. 25. 20:05

메소드 (method)

어떤 특정 작업을 수행하기 위한 명령문의 집합 (함수와 비슷하다)

중복되는 코드를 메소드로 만들어 코드의 반복 사용을 피할 수 있다.

public static void main(String[] args) {
	// main method
}

main() 메소드는 자바 프로그램을 실행 및 종료하는 기능을 지닌다

 

public class Application1 {
    public static void main(String[] args) {
        System.out.println("main() 시작!");
        Application1 app1 = new Application1();
        app1.methodA();

        System.out.println("main() 종료!");
    }

    public void methodA() {
        System.out.println("methodA() 호출");
        methodB();
        System.out.println("methodA() 종료");
    }

    public void methodB() {
        System.out.println("methodB() 호출");
        System.out.println("methodB() 종료");
    }
}

main에서 다른 메소드를 부를 때와 methodA에서 methodB를 부를 때가 다른 것을 알 수 있는데, static이 안 붙은 method 끼리는 쉽게 method 이름으로 호출할 수 있기 때문이다

 

new는 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 담당한다. 

Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당된다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있다

 

public class Application1 {
    public static void main(String[] args) {
        Application1 app1 = new Application1();
        app1.methodA(19);
    }

    public void methodA(int age) {
        System.out.println("당신의 나이는 " + age + "살 입니다.");
    }
}

int age로 입력 변수를 전달해줄 수 있다. 만약 long 형의 변수를 methodA의 입력값으로 전달하게 되면 오류가 나게 될 것이다. (byte, short는 에러 발생 안함)

 

public class Application1 {
    public static void main(String[] args) {
        Application1 app1 = new Application1();
        System.out.println(app1.methodA(10));
    }

    public String methodA(int age) {
        return age*2 + "가 되었습니다.";
    }
}

method의 반환값을 이와 같이 설정해줄 수 있다. (기존엔 void 였으므로 return 값 없음)

 

public class Application1 {
    public static void main(String[] args) {
        Application1.methodA();
        methodA();
    }

    public static void methodA() {
        // 메소드 A
    }
}

static 메소드에서 static 메소드를 호출할 때는 new 연산자로 class를 호출할 필요 없이 바로 클래스를 이용해서 호출할 수 있다. 

같은 클래스 있는 static 메소드는 클래스명을 생략하고 호출할 수도 있다.

 

 

패키지 (package)

서로 관련 있는 클래스 등을 하나의 묶음으로 구성하는 것

 

 

임포트 (import)

서로 다른 패키지에 존재하는 클래스를 사용하는 경우 패키지명을 포함한 풀 클래스 이름을 사용해야 한다

하지만 매번 다른 클래스의 패키지명까지 기술하기는 번거롭다

그래서 패키지명을 생략하고 사용할 수 있도록 한 구문이 import 구문이다

package com.mtvs.section02.package_and_import;
public class Application1 {
    public static void main(String[] args) {
        int first = 30;
        int second = 20;
        
        // 다른 패키지에 있는 non-static 메소드 호출
        com.mtvs.section01.method.Caculator calc = new com.mtvs.section01.method.Calculate();
        calc.minNumberOf(first, second);
        
        // 다른 패키지에 있는 static 메소드 호출
        int max = com.mtvs.section01.method.Caculator.maxNumberOf(first, second);
    }
}

이와 같이 다른 패키지에 존재하는 클래스를 부를 때는 패키지명을 포함한 클래스의 이름을 사용하였다

 

package com.mtvs.section02.package_and_import;

import com.mtvs.section01.method.Caculator;

public class Application1 {
    public static void main(String[] args) {
        int first = 30;
        int second = 20;
        
        // 다른 패키지에 있는 non-static 메소드 호출
        Caculator calc = new Calculate();
        calc.minNumberOf(first, second);
        
        // 다른 패키지에 있는 static 메소드 호출
        int max = Caculator.maxNumberOf(first, second);
    }
}

import를 사용하여 간단하게 코드를 작성할 수도 있다

 

 

API (Application Programming Interface)

https://shine-slowly.tistory.com/75

응용프로그램 (카카오톡 등)에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스를 뜻한다

https://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/

 

API란? 비개발자가 알기 쉽게 설명해드립니다! - wishket

여러분은 API가 무엇인지 알고 계신가요? 자주 듣지만 그 개념이 무엇인지 정확하게 알기 쉽지 않은데요. 이번 시간 위시켓이  API란 무엇인지 알기 쉽게 설명해드리고자 합니다. 

blog.wishket.com

API는 어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구를 뜻한다. API를 이용하면 두 개의 소프트웨어가 서로 통신을 주고받을 수 있으며, 이는 우리가 모바일을 이용해서 하는 모든 행동들의 기반을 이루고 있다고 할 수 있다.

https://blog.wishket.com/soap-api-vs-rest-api-%EB%91%90-%EB%B0%A9%EC%8B%9D%EC%9D%98-%EA%B0%80%EC%9E%A5-%ED%81%B0-%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%80/

 

SOAP REST 차이, 두 방식의 가장 큰 차이점은? - wishket

API는 방식에 따라 'SOAP REST 차이'가 있다는데, 이 둘의 차이점은 과연 무엇일까요? 각각 어떤 장점들이 있는지, 어떤 상황에 무엇이 더 잘 맞는지 알려드리겠습니다:)

blog.wishket.com

 

 

쉽게 말해 우리가 구현할 수 없거나 구현하기 번거로운 기능들을 JDK를 설치하면 사용할 수 있도록 제공한 소스코드(클래스나 인터페이스)들을 의미한다. 더 쉽게 말해 누가 작성해 놓은 소스코드이니 가져다 쓰는 방법을 제공해 주는 것이다. 모든 코드를 우리가 다 외울 수 없으니 API 문서를 별도로 제공해주고 있다.

https://docs.oracle.com/javase/8/docs/api/

 

 

Scanner 클래스

읽은 바이트를 문자, 숫자, 실수, boolean, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스

public class Application1 {
    public static void main(String[] args) {
        // 스캐너 객체 생성
        Scanner sc = new Scanner(System.in);

        // 입력받기
        System.out.print("이름을 입력하세요: ");
        // nextLine(): 엔터를 누르면 문자열로 반환
        String name = sc.nextLine();
        System.out.println("입력하신 이름은 " + name + "입니다.");
    }
}

println 대신 print를 사용하면 마지막에 \n 없이 출력된다

 

nextInt() : int형으로 반환

nextLong() : long형으로 반환

nextBoolean() : boolean형으로 반환

 

public class Application1 {
    public static void main(String[] args) {
        // 스캐너 객체 생성
        Scanner sc = new Scanner(System.in);
        
        System.out.print("아무 문자나 하나의 문자를 입력해 주세요: ");
        char ch = sc.next().charAt(0);
        System.out.println("입력하시는 문자는 " + ch + "입니다.");
    }
}

char은 nextChar()이 존재하지 않는다. 

 

'JAVA > JAVA' 카테고리의 다른 글

Java 기초 : 배열  (0) 2023.07.27
Java 기초 : 제어문  (0) 2023.07.25
Java 기초 : 변수  (0) 2023.07.21
IntelliJ : 프로젝트 생성 (Hello World 출력)  (0) 2023.07.18
Java, IntelliJ : 개요 및 개발환경 구축  (0) 2023.07.15