Chapter 12. Java基本API(1)
46101 ワード
java.ほうそう
Java APIは様々なクラスを提供しており、その中で最も基本的なクラスはjavaです.langパッケージに含まれます.Javaプログラミングの基本パッケージなので、追加のインポートは必要ありません.
Objectクラス
JAvaのすべてのクラスは、直接または間接的に継承された最上位クラスです.
Javaのすべてのクラスの基本的な特徴を決定しました.
再定義可能メソッド
protected Object clone() throws CloneNotSupportedException() オブジェクトをコピーして を変換
public boolean equals(Object obj) オブジェクトが同じかどうかを確認し、結果 を返します.
protected void finalize() throws Throwable ごみ収集を実行するときの自動コール
public final Class getClass() オブジェクトの実行クラス を返します.
public int hashCode()
オブジェクト のハッシュコード値 を返す.
public String tostring()
オブジェクトを表す文字列に変換
clone():オブジェクトの参照(アドレス)値のみをコピーする浅いコピーではなく、参照ターゲット値(メモリ)の深いコピーをコピーします.
再定義できないメソッド
これらは同期に関連するスレッド制御方法である.
public final void notify()
public final void notifyAll()
public final void wait()
public final void wait(long timeout)
public final void(long timeout, int nanos)
test.clone.Point.java
equals
デフォルト型変数の値が同じかどうかを比較するには、演算子"=="が使用されますが、参照型変数の場合は、演算子"="が使用されると、参照するオブジェクトが同じかどうかが比較されます.
次の例では、str 1とstr 2は異なるアドレスを持つため、簡単に比較するのはfalseですが、equals()を使用して参照タイプ変数の値が参照オブジェクトの値と同じかどうかを比較すると、戻りtrueが表示されます.
test.equals.EqualsEx.java
オブジェクトのランタイムクラスを返します
JVMにロードされたターゲットクラスの情報を返します.
test.getClass.GetClassEx.java
オブジェクトに割り当てられたメモリにマッピングされた一意の整数をハッシュ値として返します.
メモリの使用の安定性を保証するために、プログラムは直接メモリにアクセスすることを防止し、new演算子を使用してメモリを割り当てるときにアクセス可能なメモリのコードハッシュコードを生成します.
test.hashcode.GetHashCodeEx.java
オブジェクトの情報を目的のシェイプに戻す
Objectクラスで定義されたtoString()
test.toString.ToStringEx.java
Java APIは様々なクラスを提供しており、その中で最も基本的なクラスはjavaです.langパッケージに含まれます.Javaプログラミングの基本パッケージなので、追加のインポートは必要ありません.
Objectクラス
JAvaのすべてのクラスは、直接または間接的に継承された最上位クラスです.
Javaのすべてのクラスの基本的な特徴を決定しました.
再定義可能メソッド
protected Object clone() throws CloneNotSupportedException()
public boolean equals(Object obj)
protected void finalize() throws Throwable
public final Class getClass()
public int hashCode()
オブジェクト
public String tostring()
オブジェクトを表す文字列に変換
再定義できないメソッド
これらは同期に関連するスレッド制御方法である.
public final void notify()
public final void notifyAll()
public final void wait()
public final void wait(long timeout)
public final void(long timeout, int nanos)
01 package test.clone;
02
03 public class Point implements Cloneable {
04 private int posX;
05 private int posY;
06
07 public Point(int posX, int posY) {
08 this.posX = posX;
09 this.posY = posY;
10 }
11 @Override // clone 메소드 재정의
12 public Object clone() throws CloneNotSupportedException {
13 return super.clone();
14 }
15 /*** pos X, Y Getter & Setter ***/
16 public int getPosX() {
17 return posX;
18 }
19 public void setPostX(int posX) {
20 this.posX = posY;
21 }
22 public int getPosY() {
23 return posY;
24 }
25 public void setPosY(int posY) {
26 this.posY = posY;
27 }
28 }
test.clone.CloneEx.java01 package test.clone
02
03 public class CloneEx {
04 public void testClone() {
05 point p1 = new Point(10, 20);
06 Point p2 = p1; // 얕은 복사 : p1의 주소를 복사한다.
07 Point p3 = null;
08
09 try {
10 p3 = (Point) p1.clone(); // 깊은 복사 : p1의 주소가 가리키는 값을 복사한다.
11 } catch(CloneNotSupportedException e) {
12 e.printStackTrace();
13 }
14
15 // p2는 주소를 공유하므로 영향을 받지만, p3는 영향을 받지 않음
16 p1.setPosX(111);
17 p1.setPosY(222);
18
19 System.out.println("p1 = " + p1 + " : (" + p1.getPosX() + ", " + p1.getPosY() + ")");
20 System.out.println("p2 = " + p2 + " : (" + p2.getPosX() + ", " + p2.getPosY() + ")");
21 System.out.println("p3 = " + p3 + " : (" + p3.getPosX() + ", " + p3.getPosY() + ")");
22 }
23 }
test.main.Main.java01 package test.main;
02
03 import test.clone.CloneEx;
04
05 public class Main {
06 public static void main(String[] args) {
07 new CloneEx().testClone();
08 // Point 객체의 참조값은 컴퓨터에 따라 다를 수 있다.
09 }
10 }
------
p1 = test.clone.Point@7852e922 : (111, 222)
p2 = test.clone.Point@7852e922 : (111, 222)
p3 = test.clone.Point@4e25154f : (10, 20)
clone()関数を再定義するには、クローン可能なインタフェースを継承する必要があります.それ以外の場合、C l o n e N otSupportedException例外が発生し、対応する例外処理構文が必要になります.equals
デフォルト型変数の値が同じかどうかを比較するには、演算子"=="が使用されますが、参照型変数の場合は、演算子"="が使用されると、参照するオブジェクトが同じかどうかが比較されます.
次の例では、str 1とstr 2は異なるアドレスを持つため、簡単に比較するのはfalseですが、equals()を使用して参照タイプ変数の値が参照オブジェクトの値と同じかどうかを比較すると、戻りtrueが表示されます.
test.equals.EqualsEx.java
01 package test.equals;
02
03 public class EqualsEx {
04 public void testEquals() {
05 String str1 = new String("Apple");
06 String str2 = new String("Apple");
07
08 System.out.println("str1 == str2 : " + (str1 == str2));
09 System.out.println("str1.equals(str2) : " + str1.equals(st2));
10 }
11 }
test.main.Main.java01 package test.main;
02
03 import test.equals.EqualsEx;
04
05 public class Main {
06 public static void main(String[] args) {
07 new EqualsEx().testEquals();
08 }
09 }
------
st1==str2 : false
st1.equals(str2) : true
getClass()オブジェクトのランタイムクラスを返します
JVMにロードされたターゲットクラスの情報を返します.
test.getClass.GetClassEx.java
01 package test.getClass;
02
03 import java.lang.reflect.Field;
04 import test.clone.Point; // 포인트 객체는 clone 예제의 Point Class와 동일
05
06 public class GetClass {
07 public void testGetClass() {
08 Point point = new Point(10, 20);
09
10 Class cls = point.getClass();
11
12 System.out.println("getName() : " + cls.getName()); // 객체의 클래스 이름
13 System.out.println("getSuperclass() : " cls.getSuperclass()); // 상위 클래스 이름
14
15 Field[] fields = cls.getDeclaredFields();
16 for (field f : fields) {
17 System.out.println("Field : " + f);
18 }
19 }
20 }
test.main.Main.java01 package test.main;
02
03 import test.getClass.GetClass;
04
05 public class Main {
06 public static void main(String[] args) {
07 new GetClass().testGetClass();
08 }
09 }
------
getName() : test.getclass.Point
getSuperclass() : class.java.lang.Object
Field : private int test.getclass.Point.posX
Field : private int test.getclass.Point.posY
hashCode()オブジェクトに割り当てられたメモリにマッピングされた一意の整数をハッシュ値として返します.
メモリの使用の安定性を保証するために、プログラムは直接メモリにアクセスすることを防止し、new演算子を使用してメモリを割り当てるときにアクセス可能なメモリのコードハッシュコードを生成します.
test.hashcode.GetHashCodeEx.java
01 package test.hashcode;
02
03 public class GetHashCodeEx {
04 public void testHashCode() {
05 Point point = new Point(10, 20);
06
07 System.out.println(point.hashcode());
08 }
09 }
10 class Point { // Point 객체를 선언하여 hashCode 재정의
11 int posX;
12 int PosY;
13
14 public Point(int posX, int posY) {
15 this.posX = posX;
16 this.posY = posY;
17 }
18
19 @Override
20 public int hashCode() { // hashCode 메소드 재정의
21 return "point HashCode : " + super.hashCode();
22 }
23 }
test.main.Main.java01 package test.main;
02
03 import test.hashcode.GetHashCodeEx;
04
05 public static void main(String[] args) {
06 public static void main(String[] args) {
07 new GetHashCodeEx().testHashCode();
08 // 실행 결과는 컴퓨터에 따라 다를 수 있다.
09 }
10 }
------
point HashCode : 2018699554
toString()オブジェクトの情報を目的のシェイプに戻す
Objectクラスで定義されたtoString()
public String toString() {
return getClass().getName() + "@"
+ Integer.toHexString(hashCode());
}
TOStringが上書きされていない場合は、クラス名と16進hashCodeを返します.test.toString.ToStringEx.java
01 package test.toString;
02
03 public class ToStringEx {
04 public void testToString() {
05 Point point = new Point(10, 20);
06
07 System.out.println(point);
08 // System.out.println(point.toString());
09 }
10 }
11
12 class Point {
13 int posX;
14 int posY;
15
16 public Point(int posX, int posY) [
17 this.posX = posX;
18 this.posY = posY;
19 }
20
21 @Override
22 public String toString() { // toString 메소드 재정의
23 return "point 객체 : (" + posX + ", " + posY + ")"
24 }
25 }
test.main.Main.java01 package test.main;
02
03 import test.toString.ToStringEx;
04
05 public class Main {
06 public static void main(String[] args) {
07 new ToStringEx().testToString();
08 }
09 }
------
point 객체 : (10, 20)
Reference
この問題について(Chapter 12. Java基本API(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@normal114/Chapter-12.-자바-기본-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol