[JAVA]API

김주현·2021년 4월 8일
1

Java

목록 보기
15/15

아래와 같이 system.out의 의미는 화면에 어떤 내용을 출력한다는 의미를 가지고 있습니다.

System.out.println(1);

println은 메소드를 의미하고 system은 클래스이고 out은 그 클래스의 필드(변수)입니다.
System을 인스턴스화한적이 없음에도 불구하고 필드out에 접근할 수 있는 것은 out이 static이라는 것을 암시합니다.

아래와 같이 System클래스는 java.lang의 소속입니다. 패키지 java.lang은 자바 프로그래밍을 하기 위해서 필수적인 클래스들을 모아둔 패키지입니다. 따라서 사용자의 편의를 위해서 자동으로 로딩을 하고 있는 것입니다.

package org.javatutorials.library;

public class LibraryDemo1 {

	public static void main(String[] args) {
		System.out.println(1);
	}

}

위,아래의 코드는 서로 같은 코드입니다.

package org.javatutorials.library;
import java.lang.*;
public class LibraryDemo1 {

	public static void main(String[] args) {
		System.out.println(1);
	}

}

자바에서 제공하는 기본 패키지들은 아래와 같습니다.

  • java.lang : 자바프로그래밍을 위한 가장 기본적인 패키지와 클래스를 포함하고 있습니다.
  • java.util : 프로그램을 제어하기 위한 클래스와 데이터를 효율적으로 정리하기 위한 클래스들을 담고 있습니다.
  • java.io : 키보드,모니터,프린터,파일 등을 제어할 수 있는 클래스들의 모임
  • java.net : 통신을 위한 기능들을 담고 있습니다.

API (Application Programming Interface)

API란 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들을 의미합니다. Java SE(JDK)를 설치하면 시스템을 제어하기 위한 API를 제공합니다. 자바개발자들은 자바에서 제공한 API를 이용해서 자바 애플리케이션을 만들게 됩니다. 패키지 java.lang.*의 클래스들도 자바에서 제공하는 API중의 하나라고 할 수 있습니다.

API 보는법

우선 JDK버전이 무슨버전인지 아래의 과정을 통해 확인해보자.

해당파일의 오른쪽클릭 후 properties클릭

Java Compiler클릭후 오른쪽에 적혀있는 jdk버전확인

구글에 'JDK 14 API'라고 검색한 다음 JDK 14 Documentation을 눌러 접속합니다. 아래의 홈페이지와 같습니다.

https://docs.oracle.com/en/java/javase/14/

왼쪽의 API Documentation을 클릭합니다.

테스트로 system.out.println에 대해 검색해보자

System클래스의 out변수를 검색하면 System클래스 안에는 다음과 같이 선언되어 있다는 것을 볼 수 있습니다.

이렇듯 println은 다른 클래스인 Printstream의 method인데 어떻게 불러올 수 있었을까? System 클래스의 소스를 열어보면 아래와 같이 코딩되어 있음을 예상할 수 있습니다

class System{
PrintStream out = new PrintStream();

//생략
}

System클래스가 PrintStream 클래스의 println()메소드를 사용하기 위해 out이라는 변수명으로
PrintStream 클래스를 생성한 것입니다. out은 PrintStream이라는 클래스의 인스턴스 이름을 out으로 정한 것일뿐 out이라는 이름을 temp로 바꿔도 무방할 것입니다. out자체가 PrintStream이기 때문에 상속과는 무관하게 PrintStream클래스 내에 있는 println()을 사용할 수 있는 것입니다.

또한, println에는 인자의 다양한 데이터타입들이 존재한다는 것을 확인할 수 있습니다.
(다양한 데이터타입에 대해 메소드를 오버로딩해서 준비하고 있다는 말입니다.)

0개의 댓글