[Java] 11-1 java.ほうそう


java.langパッケージはjavaプログラムの基本クラスを含むパッケージです.だからjavalangパッケージのクラスとインタフェースはimportを必要とせずに使用できます.
今回の部分はjavalangコースに属する主要クラスを勉強します.
Object:Javaクラスとして使用される最上位クラス
システム:標準入力デバイス(キーボード)からデータ入力を受信し、標準出力デバイス(モニタ)に出力します.Java仮想マシンを閉じ、ゴミ収集器を要求します.
≪クラス|Class|emdw≫:クラスをメモリにロードします(実行するプログラムをセカンダリ・メモリからプライマリ・メモリにインポートするために使用されます).
String:文字列を保存し、複数の情報を取得するために使用します.
Wrapper(Byte/shortCharacter/Interger/FLoat/DoubleBoolean/Long):文字列をデフォルト・タイプに変換して入力値を確認するデフォルト・タイプのデータを持つオブジェクトを作成します.
Math:数学関数の使用

Java APIドキュメント


API(Application Programming Interface)はライブラリとも呼ばれ、プログラム開発でよく使われるクラスとインタフェースの集合である.我々が使用するStringクラスとSystemクラスもAPIに属するクラスである.
膨大なJava標準APIで、私たちが望むAPIを簡単に見つけて使用できるようにするのがAPIツールです.
https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/package-summary.html

Objectクラス


クラスを宣言するとき、extendsキーワードを使用して他のクラスを継承しなくてもjavaは暗黙的に使用されます.lang.objectクラスが継承されます.したがって,JavaのすべてのクラスはObjectクラスのサブクラスかサブクラスかである.
ObjectはJavaのトップクラスの親に相当し、フィールドはなく、コンストラクション関数とメソッドから構成されています.すべてのクラスの最上位の親はオブジェクトであるため、すべてのクラスでオブジェクトのメソッドを使用できます.

オブジェクトの比較(equals()


public boolean equals(Object obj){...}
equals()メソッドの各タイプはオブジェクトであり、すべてのオブジェクトが各値に代入できることを意味します.すべてのオブジェクトを自動的にオブジェクトタイプに変換できるからです.
Objectクラスのequals()メソッドは、比較演算子==と同じ結果を返します.2つのオブジェクトが同じオブジェクトである場合、trueまたはfalseが返されます.
boolean result = obj1.equals(obj2);
		
boolean result2 = (obj1==obj2); //결과가 동일
Javaでは、2つのオブジェクトを対等に比較する場合、equals()メソッドが一般的に使用されます.
equals()メソッドは、2つのオブジェクトを比較し、論理的に等しい場合はtrueを返します.そうでない場合はfalseを返します.(同じオブジェクトでも他のオブジェクトでも、オブジェクトが格納するデータが同じであることを示す)
たとえば、Stringオブジェクトのequals()メソッドは、Stringオブジェクトの番号を比較するのではなく、文字列が同じかどうかをチェックします.これは、Stringクラスがオブジェクトのequals()メソッドを再定義し、番号比較ではなく文字列比較に変更したためです.
通常、オブジェクトのequals()メソッドは直接使用されるのではなく、サブクラスで再定義され、論理的にピア比較される場合に使用されます.
equals()メソッドを再定義する場合は、まず各値(比較オブジェクト)が基準オブジェクトのタイプと同じかどうかを決定します.オブジェクトタイプのパラメータは、任意のオブジェクトのパラメータとして提供できます.そのため、まずinstanceof演算子を使用して、データムオブジェクトと同じかどうかを決定する必要があります.
比較オブジェクトが異なるタイプの場合、equals()メソッドはfalseを返します.比較オブジェクトが同じタイプの場合、強制タイプを標準オブジェクトタイプに変換して、フィールド値が同じかどうかを確認できます.
フィールド値が同じ場合はtrueまたはfalseを返します.
package sec03.exam02;

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; //Member 타입으로 강제 타입 변환하고 id 필드값이 동일한지 검사
			if(id.equals(member.id)) {
				return true;
			}
		}
		return false; //매개값이 Member 타입이 아니거나 id필드값이 다를 경우 false 리턴
		
	}
}
package sec03.exam02;

public class MemberExample {

	public static void main(String[] args) {
		// TODO 자동 생성된 메소드 스텁
		Member obj1 = new Member("blue");
		Member obj2 = new Member("blue");
		Member obj3 = new Member("red");
		
		if(obj1.equals(obj2)) { //매개값이 Member 타입이고 id필드값도 동일하므로 true
			System.out.println("obj1과 obj2는 동등합니다.");
		}
		else {
			System.out.println("obj1과 obj2는 동등하지 않습니다.");
		}
		
		if(obj1.equals(obj3)) { //매개값은 Member 타입이지만 id필드값이 다르므로 false
			System.out.println("obj1과 obj3는 동등합니다.");
		}
		else {
			System.out.println("obj1과 obj3는 동등하지 않습니다.");
		}
	}

}
obj 1とobj 2は等しい.
obj 1とobj 3は等しくない.

オブジェクトハシコード(hashCode()


オブジェクトハッシュコードとは、オブジェクトを識別する整数値を指す.ObjectクラスのhashCode()メソッドは、オブジェクトのメモリハッシュを使用してハッシュコードを生成して返します.したがって、各オブジェクトには異なる値があります.
まずhashCode()メソッドを実行し、返されるハッシュコード値が同じかどうかを確認します.ハッシュ符号値が異なる場合は他のオブジェクトと判断し、ハッシュ符号値が同じ場合はequals()法を用いて再び比較する.
したがって,hashCode()メソッドがtrueであってもequals()の戻り値が異なると他のオブジェクトになる.