Day19 - API - java.lang 패키지

2021. 3. 12. 18:59JAVA 공부

음 .. 이번 시간은요 ... API에 있는 java.lang 패키지에 대해서 알아 볼겁니다.

 

저번 시간 까지는 자바의 기본적인 문법들을 배웠구요

 

이제는, 그런 문법들을 가지고 누군가가 만들어 놓은 기능들을 ( 자바는 오픈소스 이기 때문에 ) 좀 알아보는 시간을 가진다고 합니다.

 

이미 만들어져 있는 것이기 때문에, 새로 만들 필요는 없고 가져다가 사용할 줄 알면 되는 거겠죠?

 

Object (Java Platform SE 8 ) (oracle.com)

 

Java Platform SE 8

 

docs.oracle.com

링크를 들어가게 되면, 

요런 화면이 나와요 , 전부 영어라는 점이 슬픕니다.. 여유 되면 영어 공부도 하면 좋겠네요

자바에 새로운 기능이 나오거나 하면 여기서 찾아봐야 된다고 합니다...

누군가가 한글로 써서 올릴 때까지 ^^;

1번이 패키지 ....

2번이 패키지 안에 있는 클래스 , 인터페이스 등등이 있습니다.

3번이 선택한 클래스 or 인터페이스 등등의 정보가 나옵니다.

 

여기서 가장 중요한 건, 3번 이겠죠?

여기에는 fields, constructors, method 이렇게 3개가 있습니다

멤버변수, 생성자, 메서드 입니다.

 

여기서 찾아서 어떻게 사용하는지 확인 할 수 있는건데 .... 전부 영어라서 ... 번역기가 있긴 하지만 ㅎㅎ

보기만 해도 어지럽습니다 ( 영어 울렁증인가 .....?)

 

이러한 것들을 전부 하나하나 확인할 수는 없고, 자주 사용하는 것만 알면 되는데요

 

오늘은 간단하게 알아보도록 하겠습니다.

 

원래, 다른 패키지에 있는 클래스 등을 사용하려면 import 를 사용해서 가지고 와야 했었는데...

java.lang 패키지는 자바 프로그램의 기본적인 클래스들을 담고 있는 패키지인데, java.lang 패키지에 있는 클래스와 인터페이스는 improt 구문 없이 사용할 수 있습니다.

 

먼저, Object (최상위 클래스) 에 대해 조금 알아봅시다.

equals - 객체의 주소값이 같다면 true 를 반환합니다

toString - 주소값을 문자열로 반환

이제 Object 를 상속받아야만 쓸 수 있는 protected 로 가려져 있는 메서드를 봅시다

Person 클래스를 1개 만들어 줄게요. Object 는 상속을 아무것도 안쓰면 저절로 상속이 생략 된 겁니다 ~

alt + shift + s 를 눌러서 오버라이딩을 누르게 되면...

요렇게 어떤 메서드 들을 오버라이딩 할 수 있는지 확인 할 수 있는데

여기서 노란색으로 된 애들이 protected 된 애들 입니다.

finalize(), clone() 를 눌러 줄게요.

 

그리고 Person 클래스 객체를 한 개 만들어 줄게요

finalize - 객체가 소멸될 때 호출 (그 시점은 알수가 없음)

요렇게 오버라이딩 해주세요 ~ 보면, throws 가 되어 있죠? 예외처리 해줘야 되요 ( 여기서는 finallize() 를 사용하지 않고, 알아서 가비지 컬렉터가 사용함 )

finalize 를 protected 해서 가린데는 다 이유가 있습니다. 언제 객체가 소멸될지 정확히 알 수가 없기 때문에 쓰지 말라고 해둔 거에요 ~ 어차피 가비지 컬렉터가 알아서 객체를 소멸 시켜주기 때문이죠

 

clone - 객체를 얕은 복사 해서 돌려준다 ( 얕은 복사는 값만 복사가 되는 겁니다 )

여기도 throws 가 되어 있죠? 이번에는 직접 사용할 것이기 때문에 예외 처리를 해줘야 합니다.

그런데, 에러가 뜨네요?

사실 clone 은 함부로 데이터의 값 복사가 일어나지 말라고, 사용하려면 interface 를 추가해야 한다고 합니다

Cloneable 이라는 interface 를 추가해줘야 에러가 안나고 정상 작동 됩니다 ㅎㅎ;

 

여기까지 Ojbect 클래스의 메서드 에 대해 조금 알아 보았습니다.

 

System의  System.currentTimeMillis 에 대해 알아 봅시다

System 은 전부 Static 으로 이루어져 있습니다.

 

currentTimeMills 는 1970년 1월 1일 00시 기준으로 현재까지 흘러온 시간을 밀리초로 반환해주는 메서드 인데요

프로그램의 간단한 시간 측정에 사용합니다

 

시간을 밀리초로 돌려주기 때문에, 코드가 실행하는 시간이 다르면 그 시간을 구할 수 있습니다

0.001 을 곱해줘야 저희가 원하는 초로 나온다고 합니다 ㅎㅎ

 

즉 . 시작하기전에 시간을 가져오고 , 어떤 프로그램을 하나 돌린 후에, 시간을 가져와서 end - start 를 하면, 얼마나 걸렸는지 알 수 있겠죠?

 

이번에는 이렇게, java.lang 에 있는 Object 와 System의 메서드 들을 조금씩 알아 보았습니다

 

고생하셨습니다

'JAVA 공부' 카테고리의 다른 글

Day21 - 외부라이브러리 추가  (0) 2021.03.16
Day20 - String  (0) 2021.03.15
Day19 - 예외 만들기  (0) 2021.03.12
Day19 - 예외 던지기 throws  (0) 2021.03.12
Day18 - 예외처리  (0) 2021.03.11