[Java] java.lang 클래스

toget ㅣ 2023. 10. 3. 11:15

Object class 소개
java.lang은 Java 프로그래밍 언어의 기본 패키지입니다.
java.lang 패키지의 클래스들은 Java 프로그래밍을 할 때 자동으로 import 되므로 별도의 import 문을 추가할 필요가 없습니다.

몇 가지 중요한 클래스와 개념들을 보면

Object 클래스: 모든 클래스의 부모 클래스로, 모든 객체가 공통적으로 가지는 메서드들을 제공합니다.

equals(), hashCode(), toString() 등이 여기에 속합니다.


기본 데이터 타입 래퍼 클래스: java.lang 패키지는 기본 데이터 타입을 객체로 다루기 위한 래퍼(wrapper) 클래스들도 제공합니다. 예를 들어, Integer, Double, Boolean 등이 있습니다.

 

String 클래스: 문자열을 다루기 위한 클래스로, 문자열 연산 및 변환을 위한 다양한 메서드를 제공합니다.

 

예외 처리: java.lang 패키지에는 자바에서 발생하는 예외와 관련된 클래스들이 포함되어 있습니다.

Throwable, Exception, RuntimeException 등이 여기에 속합니다.

 

스레드 관리: Thread 클래스를 비롯하여 스레드 생성과 관리를 위한 클래스들도 java.lang 패키지에서 제공됩니다.

 

System 클래스: 시스템과 관련된 정보와 동작을 다루는 클래스로, 입출력, 환경 변수, 현재 시간 등을 다루는 메서드들이 있습니다.

 

Math 클래스: 수학 관련 연산을 위한 메서드들을 제공합니다.

Java의 모든 클래스는 Object 클래스를 상속받습니다. Object 클래스는 모든 객체가 공통으로 가지는 메서드들을 제공하며, 이 메서드들은 필요에 따라 오버라이딩하여 사용할 수 있습니다.

그중에서 많이 다루는 것들을 정리해보았습니다.

equals() : 객체의 동등성을 비교합니다. 주어진 객체와 현재 객체가 같은지를 판단합니다. 이 메서드를 오버라이딩하여 객체의 내용 비교를 정의할 수 있습니다.

hashCode() : 객체의 해시 코드를 반환합니다. 해시 기반 컬렉션에서 객체를 저장하거나 검색할 때 사용됩니다. hashCode() 메서드를 오버라이딩하여 객체의 내용에 따라 적절한 해시 코드를 반환할 수 있습니다.

toString() : 객체의 문자열 표현을 반환합니다. 주로 디버깅이나 출력 목적으로 사용됩니다. toString() 메서드를 오버라이딩하여 원하는 형식의 문자열을 반환할 수 있습니다.

 

예시 : toString()

public class PersonTest {
	private String name;
	private int age;

    public PersonTest(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
	
    public static void main(String[] args) {
		PersonTest person = new PersonTest("Alice", 30);
		System.out.println(person); // 이 경우, toString()이 자동으로 호출됨
	}
}

예시 : equals()

public class EqualsTest {// 테스트 클래스를 생성.
    String name;
    int num;
    
    EqualsTest(int num, String name){
    this.num = num;
    this.name = name;
	}

    @Override
    public boolean equals(Object obj) { // 오버라이딩으로 객체의 타입을 확인하여, 뒤에 객체와 같다면, 
    	if(obj instanceof EqualsTest) {   //true를 반환
    		if(num == ((EqualsTest) obj).num && ((EqualsTest) obj).name.equals(name)) {
    			return true;
    		}
    	}
    	if(obj instanceof EqualsTest && ((EqualsTest) obj).name.equals(name)) {
   			return true;
    	}
		return false;
}

 

public class Main /*extends Object생략되어있다.*/ {
    public static void main(String[] args) throws Exception {
        Object obj = new Object();
        Main main = new Main();
	}
}

예시 : hashCode()

System.out.println(et1.hashCode());
System.out.println(et2.hashCode());
System.out.println(et1.name.hashCode());
System.out.println(et2.name.hashCode());

결과
3556499
3556500
3556498
3556498

예시 : System 클래스

 

System.out.print(""); // out은 콘솔창에 출력한다.
System.out.println(""); //
System.in; // 키보드를 입력받는다.
int keyInput = 0;

while(true) {
break;
keyInput = System.in.read();
System.out.println(keyInput);
}
결과
7 => 55, 13, 10
8 => 56, 13, 10
a => 97, 13, 10

System.out.println(System.currentTimeMillis()); // 현재 시간을 ms 단위로 받아온다.
System.out.println(System.nanoTime()); // 나노 단위의 현재 시간을 받아온다.
나노머신, 나노미터
System.out.println(System.currentTimeMillis());
// 1693449477.674 s
// 28,224,157 m
// 470,402 h + 37 m
// 19,600 d + 2 h
// 53 y 255d
// 2023y 8 M 31 d
// 0년이 아니라 1970년을 기준으로 시간을 체크한다.
// GMT 그리니치 시간 : 영국이 GMT + 0 / 한국 GMT + 9
// UTC, ms 단위
// Date type
// System.exit(0);//시스템을 종료한다.

System.out.println("Java Version : " + System.getProperty("java.specification.version"));
System.out.println("JDK Directory : " + System.getProperty("java.home"));
System.out.println("OS : " + System.getProperty("os.name"));
System.out.println("user : " + System.getProperty("user.name"));
System.out.println("user Directory : " + System.getProperty("user.home"));
System.out.println("directory : " + System.getProperty("user.dir"));

결과
1693466503880
238950965250375
1693466503880
Java Version : 17
JDK Directory : /Applications/Eclipse Java.app/Contents/Eclipse/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.macosx.aarch64_17.0.7.v20230425-1502/jre
OS : Mac OS X
user : limjuhan
user Directory : /Users/limjuhan
directory : /Users/limjuhan/eclipse-workspace/Java4

 

EXIT() 나가기

0 (EXIT_SUCCESS): 이 종료 코드는 프로그램이 정상적으로 종료되었음을 나타냅니다. 일반적으로 프로그램이 예상대로 동작하여 문제 없이 종료된 경우에 0을 반환합니다. 이는 많은 운영 체제에서 프로그램이 성공적으로 실행되었음을 나타내기 위해 사용됩니다.


양의 정수 (EXIT_FAILURE): 양의 정수 종료 코드는 프로그램이 오류로 인해 종료되었음을 나타냅니다. 종료 코드는 오류의 유형이나 상황을 구체적으로 표현할 수 있습니다. 양의 정수 중 특정 숫자를 사용하여 특정 종류의 오류를 식별하는 것은 프로그램의 디버깅 및 로깅에 도움이 될 수 있습니다.


음의 정수: 음의 정수 종료 코드는 종종 특별한 상황을 나타내는 데 사용됩니다. 특정 오류 또는 비정상적인 상황을 나타내기 위해 사용될 수 있습니다. 정확한 의미는 프로그램에 따라 다를 수 있습니다.

 

'Java' 카테고리의 다른 글

[Java] Math 클래스  (0) 2023.10.03
[Java] enum (열거형)  (0) 2023.10.03
[Java/eclipse] Module (class path, module path)  (0) 2023.10.03
[Java] 생성자 메서드와 this  (0) 2023.10.03
[Java]2차 배열과 for-each문  (0) 2023.10.03