📌Java.lang 패키지에 속하는 주요 클래스와 용도



클래스용도
🧩 Object자바 클래스의 최상위 클래스 로 사용
🧩System📍표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용
📍표준 출력 장치(모니터)로 출력하지 위해 사용
📍자바 가상 기계를 종료할 떄 사용
📍쓰레기 쉽기를 실행 요청할 때 사용
🧩Class클래스를 메모리로 로딩할 댸때 사용
🧩String문자열을 저장하고 여러 가지 정보를 얻을 때 사용
🧩Wrapper📍기본 타입의 데이터를 갖는 객체를 만들 때 사용
📍문자열을 기본 타입으로 변환할 때 사용
📍입력값 검사에 사용
🧩Math수학 함수를 이용할 때 사용

📍Wrapper
Byte, Short, Character, Integer, Float, Double, Boolean, Long 나타냄



📌핵심 콕콕



📌Object 클래스

🍀자바의 최상위 부모 클래스

🍀Object 클래스의 메소드는 모든 자바 객체에서 사용할 수 있음

🍀모든 클래스는 Object 클래스의 자식이거나 자손 클래스이다.

📍객체 동등 비교 (equals() 메소드)

public class Member {
	public String id;
    
    public Member(String id) {
    	this.id = id;
    }
    
    @Override
    public boolean equals(Object obj) {
    	if(obj instanceof Member) { 		==> 매개값이 Member 타입인지 확인
        	Member member = (Member) obj;	--
            if(id.eqials(member.id)) {		  | <== Member 타입으로 강제 타입변환
           		return true;				  |	id 필드 값이 동일한지 검사 후, 
            }								--	동일하다면 true를 리턴
        }
        return false;	<== 매개값이 Member 타입이 아니거나 id 필드값이 다른 경우 
        					false를 리턴
    }
}

🍀자바에서는 두 객체를 동등 비교할 때 equls() 메소드를 흔히 사용한다.

🍀 equals() 메소드는 두 객체를 비교해서 논리적으로 동등하면 true를 리턴하고, 그렇지 않으면 false를 리턴한다.


📌객체 해시코드(hashCode())


🍀객체 해시코드란 객체를 식별하는 하나의 정수값이다.

🍀Object 클래스의 hashCode() 메소드는 객체의 메모리 번지를 이용하여 해시코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지고 있다.

🍀논리적 동등 비교 시 hashCode() 를 오버라이딩 할 필요가 있다.
==>HashSet , HashMap , Hashtable 은 두 객체가 동등한 지 비교한다.

📍다른 키로 인식

<public class KeyExample {
	public static void main(String args[]) {
    //key 객체를 식별키로 사용해서 String 값을 저장하는 HashMap 객체 생성
    
    	HashMap<Key, String> hashMap = new HashMap, String>();
    
   		 //식별키 new key(1)로 "홍길동"을 저장함
    	hashMap.put(new Key(1), 홍길동);
    
   	 	//식별키 new key(1)로 "홍길동"을 읽어옴
    	String value = hashMap.get(new Key(1));
    	System.out.println(value);
   	}
 }

📍결과

null

🍀"홍길동"을 읽으려면 재정의한 hashCode() 메소드를 Key 클래스에 추가하면된다.

🍀hashCode()의 리턴값을 number 필드값으로 했기 때문에 저장할 때의 new Key(1)과 읽을 때의 newKey(1)로 같은 해시코드가 리턴된다.


📌객체 문자 정보(toString())

🍀객체 문자 정보란 객체를 문자열로 표현한 값을 뜻함.

🍀 Object 클래스의 toString() 메소드는 객체의 문자 정보를 리턴.

🍀toString 메소드는 '클래스이름@16진수해시코드'로 구성된 문자 리턴.

Object obj = new Object();
System.out.println( obj.toString() );

📍결과

java.lang.Object@de6ced

📌System 클래스

🍀System 클래스를 이용시 ==> 운영체제의 일부 기능 이용 가능

🍀일부기능에는 ==>
프로그램 종료, 키보드로부터 입력, 모니터로 출력 현재시간 읽기 등.이 가능하다

🍀 System 클래스의 모든 필드와 메소드는 정적 필드와 정적 메소드로 구성.


📌프로그램 종료(exit())

🍀경우에 따라 JVM을 강제 종료 시킬 수 있는데, 이때 System 클래스의 exit() 메소드를 호출하면 된다.

🍀 exit메소드는 int 매개값을 지정하도록 되어있는데
==> 이것을 종료 상태값이라고 한다.

🍀일반 정상종료 일 경우 0값을 준다

System.exit(0);

📌현재 시각 읽기(currentTimeMillis(),nanoTime())

🍀 System 클래스의 CurrentTimeMillis() 메소드와 nanoTime() 메소드는 컴퓨터의 시계

==> (1/1000sec) 단위와 (1/10⁹sec) 단위로 long 값을 리턴


📍코드로 나타내기

long time = System.CurrentTimeMillis();
long time = System.nanoTime();

📌Class 클래스

🍀자바는 클래스와 인터페이스 의 메타 데이터를 Class 클래스로 관리

🍀 메타 데이터란
==> 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보를 말함.


📌 Class 객체 얻기( getClass(), forName())

📍 클래스로부터 얻는 방법

1. Class clazz = 클래스 이름.class
2. Class clazz = Class.forName("패키지...클래스이름")

📍 객체로부터 얻는 방법

1. Class clazz = 참조변수.getClass();

📍String class객체 얻는 방법

 1. Class clazz = String.class
 2. Class clazz = Class.forName("java.lang.String");
 	Sgring str = "김자바";
 3.Class clazz = str.getClass();

📍세가지 방법으로 클래스의 Class 객체를 얻고 Class의 메소드를 이용해
클래스의 전체 이름간단한 이름 그리고 페키지 이름을 얻을 수 있다.


📌String 클래스

🍀문자열 리터럴은 String 객체로 자동 생성 but String클래스의 다양한 생성자를 이용해서 직접 String 객체 생성⭕

🍀String 객체는 문자열 조작을 위한 많은 메소드를 갖고 있음.


📌 String 생성자

📍바이트 배열을 문자열로 변환하는 예제

//배열 전체를 String 객체로 생성
String str = new String(byte[] bytes);

//지정한 문자셋으로 디코딩
String str = nenw String(byte[] bytes, String charseName);

//배열의 offset 인덱스 위치부터 length만큼 String 객체로 생성
String str = new  String(byte[] bytes, int offset, int length);

//지정한 문자셋으로 디코딩
String str = new  String(byte[] bytes, int offset, int length, 
String charsetName)

📌String 메소드

🍀String 클래스는 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메소드를 가지고 있다.

📍빈도수가 높은 메소드

리턴 타입메소드 이름(매개 변수)설명
CharcharAt(int index)특정 위치의 문자를 리턴한다.
booleanequals(Object anObject)두 문자열을 비교한다.
byte[]getBytes()byte[]로 리턴
byte[]getBytes(Charset charset)주어진 문자셋으로 인코딩한byte[]로 리턴한다.
intindexOf(String str)문자열 내에서 주어진 문자열의 위치를 리턴한다.
intlength총 문자의 수를 리턴한다.
Stringsubstring(int beginIndex)beginIndex위치에서 끝까지 잘라낸 새로운 문자열을 리턴한다.

이정도만.....ㅎㅎ...


📌문자 추출(charAt())

🍀charAt()메소드는 매개값으로 주어진 인덱스 문자를 리턴.

🍀인덱스란 0에서부터 '문자열 길이-1'까지의 번호를 이야기한다.

String subject = "자바 프로그래밍";
char charValue = subject.charAt(3);


📍위에 코드로 부터 charAt(3)은 3 인덱스 위치를 이야기 함으로
'프'를 나타낸다.


📌Math 클래스

🍀수학 계산에 사용할 수 있는 메소드를 제공

🍀Math 클래스가 제공하는 메소드는 모두 정적 메소드
=>Math 클래스에서 바로 사용 가능


📌Date 클래스

🍀날짜를 표현하는 클래스.

🍀Date 클래스는 객체 간에 날짜 정보를 주고받을 때 매개 변수나 리턴 타입으로 주로 사용한다.


📌calendar 클래스

🍀 calendar 클래스는 추상(abstract)클래스이므로 new 연산자를 사용하여 인스턴스를 생성할 수 없다 ❌

🍀calendar 클래스의 정적 메소드인 getInstance() 메소드를 이용하면 현재 운영체제에 설정되어 있는 시간대(timeZone)을 기준으로 한 하위 객체를 얻을 수 있다.



📍여기까지......
와 진짜 했던 자바중에 가장 머리가 아프고 쓸 것도 많았던
부분인듯하다....
그래도 나름 깔끔하고 알아보기 쉽게 정리하려고 노력했는데.. 잘 했는지 모르겠지만 그래도 뿌듯하다..^^
끼야오🐔

profile
fire-irror

0개의 댓글