Programming Language/Java

Java 9일차 곡뢀(Java API[Object Class, System Class, Class Class])

chaerlo127 2022. 2. 26. 17:22
728x90

μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” API(Application Programming Interface)λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ κ°œλ°œμ— 자주 μ‚¬μš©λ˜λŠ” 클래슀 및 μΈν„°νŽ˜μ΄μŠ€μ˜ λͺ¨μŒμ„ λ§ν•œλ‹€.

 

API λ„νλ¨ΌνŠΈλŠ” HTML νŽ˜μ΄μ§€μ— μž‘μ„±μ΄ λ˜μ–΄μžˆλ‹€. -> νŽ˜μ΄μ§€

 

 

1. Object Class

: 클래슀λ₯Ό μ„ μ–Έν•˜κ²Œ 되면 extends ν‚€μ›Œλ“œλ‘œ λ‹€λ₯Έ 클래슀λ₯Ό μƒμ†ν•˜μ§€ μ•Šμ•„λ„ μžλ™μœΌλ‘œ java.lang.Object 클래슀λ₯Ό 상속 λ°›λŠ”λ‹€. 

 

λ”°λΌμ„œ λͺ¨λ“  μžλ°”μ˜ ν΄λž˜μŠ€λŠ” Object 클래슀의 μžμ‹μ΄κ±°λ‚˜ μžμ† ν΄λž˜μŠ€λ‹€.

 

β‘  객체 비ꡐ (equals())

: 객체λ₯Ό 비ꡐ할 λ•Œ μ‚¬μš©λ˜κ³ , 같은 객체건 λ‹€λ₯Έ 객체건 상관 없이 객체가 μ €μž₯ν•˜κ³  μžˆλŠ” 데이터가 λ™μΌν•œμ§€ ν™•μΈν•œλ‹€.

equals()λŠ” λΉ„κ΅μ—°μ‚°μž ==와 λ™μΌν•œ κ²°κ³Όλ₯Ό λ¦¬ν„΄ν•œλ‹€.

두 객체가 λ™μΌν•œ 객체면 true, 그렇지 μ•ŠμœΌλ©΄ falseλ₯Ό λ¦¬ν„΄ν•œλ‹€.

 

public boolean equals(Object obj){}

 

λ§Œμ•½ String 객체가 μžˆλ‹€λ©΄, equals()의 λ©”μ†Œλ“œλ₯Ό 톡해 λ²ˆμ§€λ₯Ό λΉ„κ΅ν•˜λŠ” 것이 μ•„λ‹Œ, String 객체 λ‚΄λΆ€μ˜ λ¬Έμžμ—΄μ„ λΉ„κ΅ν•œλ‹€.

 

equals()의 λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ ν•  λ•Œμ—λŠ” λ§€κ°œκ°’(비ꡐ객체)κ°€ κΈ°μ€€ 객체와 λ™μΌν•œ νƒ€μž…μ˜ 객체인지 확인해야 ν•œλ‹€. (String 은 String으둜)

 

// member class

public class Member {
	
	private String id;

	public Member(String id) {
		this.id = id;
	}
	
	@Override
	public boolean equals(Object object) {
		if(object instanceof Member) {
			Member member = (Member) object;
			if(id.equals(member.id)) {
				return true;
			}
		}return false;
	}

}

//main class

public static void main(String[] args) {
		Member member1 = new Member("μ•ˆλ…•");
		Member member2 = new Member("클레였파트라");
		Member member3 = new Member("μ•ˆλ…•");
		
		if(member1.equals(member2)) {
			System.out.println("1κ³Ό 2λŠ” κ°™λ‹€");
		}else { 
			System.out.println("1κ³Ό 2λŠ” λ‹€λ₯΄λ‹€");
		}
		
		if(member1.equals(member3)) {
			System.out.println("1κ³Ό 3은 κ°™λ‹€.");
		}else {
			System.out.println("1κ³Ό 3은 λ‹€λ₯΄λ‹€.");
		}
	}

 

β‘‘ 객체 ν•΄μ‹œμ½”λ“œ(hashCode())

: 객체 μ‹λ³„ν•˜λŠ” ν•˜λ‚˜μ˜ μ •μˆ˜ κ°’

 κ°μ²΄ λ©”λͺ¨λ¦¬ λ²ˆμ§€λ₯Ό μ΄μš©ν•΄μ„œ ν•΄μ‹œμ½”λ“œλ₯Ό λ§Œλ“€μ–΄ λ¦¬ν„΄ν•˜κΈ° λ•Œλ¬Έμ— κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ ν•΄μ‹œμ½”λ“œ 값을 가지고 μžˆλ‹€.

 

hashCode method λ₯Ό μ‹€ν–‰ν•΄μ„œ 리턴 된 ν•΄μ‹œ μ½”λ“œ 값이 같은지 ν™•μΈν•˜κ³ , λ‹€λ₯΄λ©΄ λ‹€λ₯Έ 객체 κ°™λ‹€λ©΄ equals() λ©”μ†Œλ“œλ‘œ λ‹€μ‹œ λΉ„κ΅ν•œλ‹€. κ·Έ ν›„, equals의 return 값이 true λ©΄ 동등 객체, falseλ©΄ λ‹€λ₯Έ 객체이닀.

 

// key class

public class Key {
	private int number;

	public Key(int number) {
		this.number = number;
	}
	
	
	@Override
	public boolean equals(Object object) {
		if(object instanceof Key) {
			_475Key key = (Key) object;
			if(this.number == key.number) { 
            // λ‹€λ₯Έ ν•΄μ‹œμ½”λ“œμ˜ 값을 λ‚˜νƒ€λ‚΄μ–΄ 버림 -> hashCodeλ₯Ό μ˜€λ²„λΌμ΄λ”© ν•„μš”
				return true;
			}
		} return false;
	}
	
	@Override
	public int hashCode() {
		return number;
	}

}

// main class
public static void main(String[] args) {
		HashMap<Key, String> hashmap = new HashMap<Key, String>();
		
		hashmap.put(new Key(1), "홍길동");
		
		String value = hashmap.get(new Key(1));
		System.out.println(value);
	}

 

μ €μž₯ν•  λ•Œ, new Key(1)와 읽을 λ•Œμ˜ new Key(1)λŠ” μ„œλ‘œ λ‹€λ₯Έ κ°μ²΄μ§€λ§Œ, HashMap은 hashCode()의 리턴 값이 κ°™κ³ , equals()κ°€ true κ°€ 되기 λ•Œλ¬Έμ— λ™λ“±ν•œ 객체둜 평가 λ°›λŠ”λ‹€.  (hashCode()λ₯Ό μž¬μ •μ˜ ν•˜λŠ” 것이 μ€‘μš”)

 

 

 β‘’ κ°μ²΄ 문자 정보(toString())

 : 객체의 문자 정보λ₯Ό λ¦¬ν„΄ν•œλ‹€. toString()은 'ν΄λž˜μŠ€μ΄λ¦„@16μ§„μˆ˜ν•΄μ‹œμ½”λ“œ'둜 κ΅¬μ„±λœ 문자 정보λ₯Ό λ¦¬ν„΄ν•œλ‹€.

 

toString()μ—μ„œ 리턴 된 값듀은 별 κ°’μ–΄μΉ˜κ°€ μ—†λŠ” μ •λ³΄μ΄λ―€λ‘œ, λ©”μ†Œλ“œλ₯Ό μž¬μ •μ˜ν•΄μ„œ μœ μ΅ν•œ μ •λ³΄λ‘œ 변경해쀄 μˆ˜μžˆλ‹€.

// string overriding class 
public class ToStringClass {
	
	private String company;
	private String os;

	public ToStringClass(String company, String os) {
		this.company = company;
		this.os = os;
	}
	
	@Override
	public String toString() {
		return company + "," + os;
	}

}

// main class 

public static void main(String[] args) {
		ToStringClass example = new ToStringClass("κ°€λ‚˜λ‹€", "κ°€λ‚˜λ‹€ OS");
		

		 String string = example.toString();
	 
		 System.out.println(string); // ν•΄λ‹Ή κ°’ κ·ΈλŒ€λ‘œ 좜λ ₯
		 System.out.println(example); // toString κ°’ λ°›μ•„μ„œ 좜λ ₯
	}

 

System.out.println()μ—μ„œ 맀개 값이 κΈ°λ³Έ νƒ€μž…μœΌλ‘œ 쀄 κ²½μš°μ—λŠ” κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜μ§€λ§Œ, λ§€κ°œκ°’μ„ 객체둜 쀄 κ²½μš°μ—λŠ” toString()을 ν˜ΈμΆœν•˜μ—¬ 리턴 값을 λ°›μ•„ 좜λ ₯λ°›λŠ”λ‹€.

 

2. System Class

: java.lang νŒ¨ν‚€μ§€ λ‚΄λΆ€μ˜ System Classλ₯Ό μ΄μš©ν•˜λ©΄ OS 일뢀 κΈ°λŠ₯을 μ΄μš©ν•  수 μžˆλ‹€.(ν”„λ‘œκ·Έλž¨ μ’…λ£Œ, ν‚€λ³΄λ“œλ‘œ λΆ€ν„° μž…λ ₯, λͺ¨λ‹ˆν„°λ‘œ 좜λ ₯, ν˜„μž¬ μ‹œκ°„ 읽기 λ“±)

 

System 클래슀의 λͺ¨λ“  ν•„λ“œ, λ©”μ†Œλ“œλŠ” 정적 ν•„λ“œμ™€ 정적 λ©”μ†Œλ“œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

 

	public static void main(String[] args) {
		for(int a = 0; a< 10; a++) {
			long time = System.nanoTime();
			if(a==9) {
				System.out.println("ν”„λ‘œκ·Έλž¨ μ’…λ£Œ");
				long lastTime = System.nanoTime();
				System.out.print((lastTime-time)+ "λ‚˜λ…Έ 초 ν”„λ‘œκ·Έλž¨ μ‹œκ°„ μ‚¬μš©ν–ˆλ‹€.");
				System.exit(0); // 0 은 μ’…λ£Œ μƒνƒœ κ°’ 
			}
		}
	}

 

System.exit(): ν”„λ‘œκ·Έλž¨ μ’…λ£Œ

System.currentTimeMillis(), nanoTime()

 : μ»΄ν“¨ν„°μ˜ μ‹œκ³„λ‘œλΆ€ν„° ν˜„μž¬ μ‹œκ°„μ„ μ½μ–΄μ„œ 밀리 세컨 λ‹¨μœ„μ™€ λ‚˜λ…Έ 세컨 λ‹¨μœ„λ‘œ long 값을 리턴

 

 

3. Class class

  Class 객체λ₯Ό μ–»κΈ° μœ„ν•΄μ„œλŠ” 3가지 방법이 μžˆλ‹€.

// ν΄λž˜μŠ€λ‘œλΆ€ν„° μ–»λŠ” 방법
Class a = ν΄λž˜μŠ€μ΄λ¦„.class
Class a = Clas.forName("νŒ¨ν‚€μ§€,,,ν΄λž˜μŠ€μ΄λ¦„")

// κ°μ²΄λ‘œλΆ€ν„° μ–»λŠ” 방법
Class a = μ°Έμ‘°λ³€μˆ˜.getClass();

 

μ˜ˆμ‹œλ₯Ό λ“€μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

	public static void main(String[] args) {
		// 첫 번째 방법
		Class clazz = Key.class;
		
		// 두 번째 방법
//		Class clazz = Class.forName("hongong_400_499.Key");
		
		// μ„Έ 번째 방법
//		Key key = new Key(1);
//		Class clazz = key.getClass();
		
		System.out.println(clazz.getName());
		System.out.println(clazz.getSimpleName());
		System.out.println(clazz.getPackageName());
	}

 

 

 - 클래슀 경둜λ₯Ό ν™œμš©ν•΄μ„œ λ¦¬μ†ŒμŠ€ μ ˆλŒ€ 경둜 μ–»κΈ°

 : Class κ°μ²΄λŠ” ν•΄λ‹Ή 클래슀의 정보λ₯Ό κ°–κ³  있기 λ•Œλ¬Έμ— 이 경둜λ₯Ό ν™œμš©ν•΄μ„œ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€ 파일 경둜λ₯Ό 얻을 수 μžˆλ‹€. 

String photoPath1 = clazz.getResourse("photo.jpg").getPath();
String photoPath2 = clazz.getResourse("images.photo2.jpg").getPath();

 

[좜처] ν˜Όκ³΅μžλ°” p 466 ~ p 484

728x90