자바 API 도큐먼트
- API (Application Programming Interface) : 프로그램 개발에 자주 사용되는 클래스와 인터페이스의 모음을 말하며
라이브러리라고도 부름
- String 클래스와 System 클래스도 모두 API에 속하는 클래스임
- API 도큐먼트 : 방대한 자바 표준 API 중에서 우리가 원하는 API를 쉽게 이용할 수 있도록 도와줌
자바 API 도큐먼트 읽는 방법 1 - URL 방문
자바 API 도큐먼트 읽는 방법 2 - 이클립스 이용하기
- String을 마우스로 클릭한 후 F1 누르기
API 도큐먼트에서 클래스 페이지 읽는 방법
- SUMMARY 에서는 이 String 클래스에 어떤 멤버들이 선언되었는지 알려준다.
- Nested : 링크가 안달려있으므로 Nested 멤버는 없다는 뜻이다. 중첩 클래스나 중첩 인터페이스가 없다는 의미
- FIELD | CONSTR | METHOD : 링크가 달려있으므로 이 String 클래스는 필드와 생성자, 그리고 메소드를 멤버로 가짐
- final 키워드가 있으므로 이 String 클래스는 부모 클래스로는 사용이 불가능하다.
- abstract 키워드가 없으므로 추상 클래스가 아님을 알 수 있다.
- extends 뒤에 Object를 통해 String 클래스는 Object를 상속받고 있음을 알 수 있다.
- implements 뒤에 있는 Serializable, Comparable<String> 등의 인터페이스들을 구현하고 있음을 알 수 있다.
- Nested | FIELD | CONSTR | METHOD 에서 FIELD 클릭
- 필드 목록이 나오고 필드의 타입과 필드 이름, 간단한 설명이 작성되어있다.
- Nested | FIELD | CONSTR | METHOD 에서 CONSTR 클릭
- 생성자 목록이 나오고 String 클래스는 매개변수의 타입이나 개수가 모두 다른 생성자들이 오버로딩되어 있음을 알 수 있다.
- 모두 new 연산자로 호출해서 String 객체를 생성할 수 있다.
- Nested | FIELD | CONSTR | METHOD 에서 METHOD 클릭
- 메소드 목록이 나오고 [Static Methods] 탭은 정적 메소드를, [Interface Method] 탭은 인스턴스 메소드 목록을 보여줌
- Modifier and Type 컬럼에는 static/protected 여부와 리턴 타입이 표시됨
- static이 있으면 정적 메소드, static이 없으면 인스턴스 메소드
- protected가 없다면 기본은 public 이다.
java.lang 패키지
- java.lang 패키지는 자바에서 가장 기본적인 클래스들을 담고 있는 패키지이다.
- java.lang 패키지의 특징은 import를 하지않아도 된다는 것이다.
- 여기에서 등장하는 클래스와 소속된 메소드들은 외울 필요 없다.
- API 도큐먼트에서 찾아보고 어떤 기능을 제공하는지 읽고 이해하는 과정을 거치자
java.lang 패키지에 속하는 주요 클래스
Object 클래스
- 자바의 모든 클래스는 Object 클래스의 자손 클래스이다.
- Object 클래스는 자바의 최상위 부모 클래스이다.
- API 도큐먼트에서 Object 클래스를 찾아 보면 필드가 없고 생성자와 메소드로만 구성되어있음을 알 수 있다.
- 모든 클래스는 Object 클래스를 상속하고 있으므로 Object 클래스의 모든 메소드를 사용할 수 있다.
Object 클래스 - 객체 비교 메소드 equals()
public boolean equals(Object obj) { }
- equals() 메소드의 매개변수 타입은 Object 타입임. 모든 객체가 매개값으로 들어올 수 있다는 의미
- 모든 객체는 Object 타입으로 자동 타입 변환될 수 있기 때문에 매개값으로 Object 타입을 적음
- equals() 메소드는 == 연산자와 동일한 결과를 낸다. (String 객체의 번지를 비교하는게 아니라 문자열을 비교함)
- Object 클래스의 메소드인 equals()를 String 클래스에서 재정의(오버라이딩)해서 번지 비교가 아닌 문자열 비교를 하는 기능으로 만듬
- 리턴 타입은 boolean이다.
- 메소드를 재정의하는 과정에서 타입이 일치하는지 instanceof 연산자로 확인하는 작업이 필요하다.
< Member 클래스>
public class Member {
// 필드
public String id;
// 생성자
public Member(String id) {
this.id = id;
}
// 메소드
@Override
public boolean equals(Object obj) {
// 매개 값이 Member 타입으로
if(obj instanceof Member) {
// equals() 메소드의 매개 값으로 들어온 obj를 Member 타입으로 강제 형변환 시켜줌
Member member = (Member)obj;
// Member 객체인 member의 필드 값인 id와 비교하려는 필드인 id가 값이 서로 동등한지 비교
if(id.equals(member.id)) {
return true;
}
} return false;
// 타입 자체가 다르거나 타입은 서로 같지만 필드 값이 다른 경우 false를 리턴해줌
}
}
< MemberExample클래스>
public class MemberExample {
public static void main(String[] args) {
Member obj1 = new Member("blue");
Member obj2 = new Member("blue");
Member obj3 = new Member("red");
if(obj1.equals(obj2)) { // 타입도 같고 필드 값도 동일해서 true
System.out.println("obj1과 obj2는 동등합니다.");
} else {
System.out.println("obj1과 obj2는 동등하지 않습니다.");
}
if(obj1.equals(obj3)) { // 타입은 같지만 필드 값이 달라서 false
System.out.println("obj1과 obj3은 동등합니다.");
} else {
System.out.println("obj1과 obj3은 동등하지 않습니다.");
}
}
}
obj1과 obj2는 동등합니다.
obj1과 obj3은 동등하지 않습니다.
Object 클래스 - 객체 해시 코드 hashCode()
-
-
System 클래스
Class 클래스
String 클래스
Wrapper(포장) 클래스
Math 클래스
'👨💻 2. 웹개발_Back end > 2-1 Java' 카테고리의 다른 글
[JAVA] 11-2 java.util 패키지 (0) | 2021.08.13 |
---|---|
[JAVA] 10-2 예외 처리 (0) | 2021.08.11 |
[JAVA] 10-1 예외 클래스 (0) | 2021.08.11 |
[JAVA] 09-2 익명 객체 (0) | 2021.08.11 |
[JAVA] 09-1 중첩 클래스와 중첩 인터페이스 소개 (0) | 2021.08.11 |
댓글