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 |