본문 바로가기
👨‍💻 2. 웹개발_Back end/2-1 Java

[JAVA] 11-1 java.lang 패키지

by 달님🌙 2021. 8. 13.
반응형

 

자바 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 클래스 

 

 

 

 

반응형

댓글