Java API
- 자바를 이용해서 애플리케이션을 구현할 수 있도록 지원하는 라이브러리
- 개발자들의 부담을 최소화하기 위해 시스템, 입출력, 화면처리, 네트워크, 스레드 등이 구현되어있는 인터페이스나 클래스
API문서
- JAVA API에서 제공하는 여러 인터페이스나 클래스들에 대한 설명과 사용법을 제공하는 문서
- HTML 형식의 문서로 작성됨
- 소스코드에서 Document 주석을 사용해서 javadoc.exe로 자동으로 API문서 생성
- 이클립스는 export -> java -> javadoc 기능을 이용해 API문서 생성 가능
API 구성
- Java SE 11 API > Module > package > interface + class
Java SE 11 API
Module
- 여러개의 패키지를 포함하고 있는 그룹
- java.base 모듈이 가장 많이 사용됨(java.lang, java.io, java.net, java.util 패키지등이 포함됨)
- Java 9 버전부터 지원
Package
- 관련있는 클래스나 인터페이스의 묶음
- 같은 패키지 내의 클래스는 import없이 사용할 수 있으나, 패키지가 다른 경우에는 반드시 import로 이용할 패키지명과 클래스명을 지정해야함
대표적 패키지
- java.lang: 가장 기본적인 인터페이스, 클래스들을 포함하고 있는 패키지
이 패키지의 인터페이스/클래스는 import 구문없이 바로 사용 가능
ex) Object, System, String, Wrapper 클래스 등
- java.io: 입출력과 관련된 인터페이스, 클래스들을 포함하고 있는 패키지
ex) xxxInputStream, xxxOutputStream, xxxReader, xxxWriter 클래스 등
- java.net: 네트워크 통신을 지원하는 인터페이스, 클래스들을 포함하고 있는 패키지
ex) socket, serversocket, url 클래스 등
- java.util: 자료구조, 날짜/시간등을 다루는 유용한 클래스들을 포함
어플리케이션 구현에 가장 많이 사용하는 패키지
ex) Collection, List, Set, Map, date, Calendar 클래스 등
java.lang 패키지
- 자바의 가장 기본적인 인터페이스, 클래스를 포함하고 있는 패키지
대표적 패키지
- Object
- 모든 객체의 최상위 부모 클래스
- Object 클래스의 메서드는 모든 객체에서 사용 가능
Class<?>getClass
: 원본 클래스 출력
- Class
- 객체의 설계도 정보를 표현하는 클래스
- 클래스명, 필드, 생성자, 메서드의 정보를 포함하고 있는 객체
- Boolean, Character, Byte, Short, Integer, Long, Float, Double
- Wrapper 클래스
- 기본자료형 타입의 값을 객체로 표현할 때 사용되는 클래스
- String, StringBuffer, StringBuilder
- String은 문자열을 표현하는 클래스. 문자열을 조작하는 다양한 메서드 포함
- StringBuffer와 StringBuilder는 내부에 버퍼(임시저장소)가 있어서 문자열 추가시 사용
- Math
- 수학 연산과 관련된 상수와 정적 메서드 제공
- 클래스의 모든 메서드가 정적 메서드
- System, Runtime
- System: 자바프로그램을 실행하는 운영체제와 관련된 정보를 제공하는 클래스
- Runtime: 운영체제와의 인터페이스 지원. 운영체제와 관련된 명령어 실행
- Throwable
- Error와 Exception 클래스의 부모 클래스
- 자바에서 발생하는 모든 오류 정보를 표현하는 것이 Error와 Exception클래스
object 클래스
- 모든 객체의 최상위 부모 클래스
- Object 클래스의 메서드는 모든 객체에서 사용 가능
object클래스 - hashcode()
객체.hashcode();
- 해시코드 값 출력
- 각 객체마다 다른 주소값을 갖고 있으므로, 내용이 같아도 다른 내용이 출력됨
object클래스 - equals(비교값)
객체1.equals(객체2);
- 두 객체간의 값 비교
- 주소값이 아닌 값만 비교함
object클래스 - toString()
객체.toString();
- 객체가 갖고 있는 값들을 문자열로 만들어 리턴, 즉 객체를 문자열로 출력할때 이용
- 초기 리턴값은 클래스이름@16진수해시코드 형식
- 보통 아래와 같이 오버라이딩해서 사용함
- toString의 오버라이딩은 변수에 어떤값이 들어있는지 확인 할 디버깅이 목적
1. Main 클래스
public class Main {
public static void main(String[] args) {
Product p = new Product("프링글스", "1600원");
System.out.println(p.toString());
}
}
2. Product 클래스
public class Student {
private String name;
private String price;
public Product(String name, String price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "상품명: " +name + ", 가격: " + price + "원";
}
}
// 출력값-> 상품명: 프링글스, 가격: 1600원
package sample;
import java.util.Date;
public class Sample{
public static void main(String[]args){
Date date = new Date();
System.out.println(date.toString());
}
}
// 현재 날짜 출력됨
Clone 메서드
클래스 참조변수명 = (클래스)복제할객체.clone();
- cloneable 인터페이스의 추상메서드
- 따라서 implements cloneable로 인터페이스를 구현해야 함
- 특정 클래스를 복제하여 같은 내용의 새로운 인스턴스를 생성할 때 사용
- 복제가 되어 내용이 같더라도 주소값이 다르므로 다른 객체임
String 클래스
- 문자열을 표현하는 객체
- 문자열과 관련된 다양한 메서드 지원함
String클래스 - length()
String str = "abcdefg";
int len = str.length();
System.out.println(len); // 7이 출력됨
혹은
int len2 = "아무말이나".length();
System.out.println(len2); // 5가 출력됨
String클래스 - equals(Object str)
- Object클래스의 equals를 재정의 한 것
- 문자열의 내용을 비교하여 동등성여부 반환
String str1 = "hello";
String str2 = "Hello";
String str3 = "hello";
boolean result1 = str1.equals(str2); // false
boolean result2 = str1.equals(str3); // true