Java 9μΌμ°¨ 곡λΆ(Java API[Object Class, System Class, Class Class])
μλ°μμ μ 곡νλ 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