Objectクラスの概要:
1.Objectクラスは、すべてのJavaクラスのルートクラスです。
2.あなたは親クラスで識別クラス宣言に延びているキーワードを使用しない場合は、
デフォルトの親クラスはjava.lang.Objectクラスです。
Objectクラスの主構造:
演算子==
コンペア値1.基本的なタイプ:限り、2つの変数が等しくなるように、真です。
2リファレンスタイプの比較基準(同じオブジェクトをポイント):同じオブジェクトにのみ点、
==演算子はのみtrueを返します。
3.オペレータが==比較すると、シンボルデータ型の両側に互換性がなければならない(自動変換
)基本データ型を除き、またはコンパイルエラー。
等号()フォーマット:obj1.equals(obj2が)
Objectから継承1.すべてのクラスは、またのequals()メソッドも書き換えることができ勝ちました。
2.あなたは、同じオブジェクトとの比較のポイントかどうか、参照型、その役割と「==」同じを比較することができます。
3.特別なケース:クラスファイル、文字列、日付とパッケージの比較が等しいとき()メソッド
(ラッパークラス)は、それにかかわらず、参照が同じオブジェクトであるかどうかのより種類と内容です。
理由:これらのクラスのクラスオブジェクトの書き換えのequals()メソッド。
4.()カスタム等号を使用する場合は、書き換えることができます。「内容」の2つのオブジェクトを比較するために使用されるすべて等しいです。
書き換えは、()メソッドの原則に等しいです:
1. 対称性: x.equals(y)のリターンが"真"である場合、y.equals(x)は"真"を返すべきです。
再帰性:x.equals(x)が "真" を返す必要があります。
2. 推移: x.equals(y)が"真"を返し、そしてy.equals(Z)がYES "真"を返す場合、
z.equals(x)が「真」を返す必要がありますので。
3. 一貫性: x.equals(y)のリターンは限りXとして、「真」であるとyが同じコンテンツを持っている、あなたかどうかもし
繰り返しx.equals(y)の回数、リターンは「真」です。
4.いかなる状況について、x.equals(ヌル)、常に返しは「偽」です。
5.いずれの場合について、x.equals(および物体xの異なる種類)が常に「偽」を返します。
==演算子とequals()コントラスト:
1 ==オペレータは、より基本的なタイプが参照型と比較することができるかもしれません。
基本的なタイプのための参照タイプの比較値がメモリアドレスを比較することです。
2.equals()クラスjava.lang.Objectの方法に属し、
この方法は、デフォルト演算子をオーバーライドしていない場合==。
特定のカスタムクラス3に依存して何のオーバーライドオブジェクトを決定する方法に等しくありません。
4.代表的には、比較が等しい場合、対応するプロパティクラスを書き換える方法に等しいです。
toString()メソッドの概要:
クラスオブジェクトに定義されている()メソッドを1.toString、戻り値はString型であり、それは、クラス名とアドレスへの参照を返します。
データの他のタイプの接続動作を行う2.文字列、自動的に、toString()メソッドを呼び出します
日付が新しい日付を()=;
System.out.println( "今=" +今)。相当于
System.out.println( "今=" + now.toString();
図3は、ユーザ定義型のtoString()メソッドに書き換えることができます。
toString()メソッドをオーバーライドStringクラスは、文字列の値を返します。
S1 = "こんにちは";
System.out.printIn(S 1)、対応するSystem.out.println(s1.toString())。
データの前記基本的なタイプのラッパークラスに対応する、toString()メソッドと呼ばれる、文字列型に変換されます。
int型、A = 10; System.out.println( "=" +)。
注意事項:
1.public文字列のtoString()オブジェクトの文字列表現を返します。
2.典型的には、このオブジェクトの文字列「テキストで表し、」メソッド戻りのtoString
結果は、簡潔かつ読みやすい情報表現である必要があり、そのすべてのサブクラスのオーバーライド(カバー)、この方法をお勧めします。
toStringメソッド3.Objectクラスは、クラスの文字列名を(オブジェクトはクラスのインスタンスである)を返し
「@」タグで、組成物のこのオブジェクト符号なし16進数表現のためのハッシュコード。
即はgetClass()。のgetName()+ '@' + Integer.toHexString(のhashCode())
4.オブジェクトの文字列表現:文字列で、反応に有用な情報オブジェクト、
メンバ変数のtoStringの値が返されたオブジェクトの内容を上書きします。
1つの パブリック クラスのToString { 2 公共 静的 ボイドメイン(文字列[]引数){ 3。 オブジェクトO = 新しい新しいオブジェクト(); 4 ストリングS = o.toString(); 5 のSystem.out.println(S); // Javaの。 @ 4554617c lang.Object 6。 7。 =模倣模倣新しい新)(模倣する; 8 // ストリングS1 = imitate.imitateToString(O); 図9 のSystem.out.println(imitate.toString()); 10 。11 // 出力オブジェクトこれは、出力文字列のtoStringメソッドは、オブジェクトを返すで 12 System.out.println(模倣)、 13は 14 // JVMがデフォルトのオブジェクトと文字列連結toStringメソッド呼び出し 15 のSystem.out.println( "wangdao" + ;模倣)を 16 } 17 } 18れている 19。 クラス模倣{ 20は INT = 10 I ; 21は int型 J = 20であり、 22は 公衆ストリングimitateToString(物体O){ 23が リターン。o.getClass()のgetName()+ '@' + ; Integer.toHexString(o.hashCode()) 24 } 25 26 IS @Override 27 公共の文字列のtoString(){ 28 リターン "模倣{" + 29 + I + "私は=" 30 "J =" + J + 31 '}' 。 32 } 33 }
hashCode()メソッドの概要:
1.public int hashCode()このオブジェクトのハッシュコード値を返します。
2.この方法は、ハッシュテーブルの性能(例えば、java.util.Hashtableによって提供されるハッシュテーブル)を向上させるために支持されています。
クラスオブジェクトによって定義された3 hashCodeメソッドは、異なるオブジェクトの整数異なるを返しません。
4.オブジェクトは整数、達成整数へのオブジェクトの内部アドレスにマッピングされました。
一般的な契約のハッシュコード:
Javaアプリケーションの実行中に1同じオブジェクトのhashCodeメソッドを複数回呼び出すとき、それは一貫して同じ整数を返さなければなりません、
等号の比較に使用されるオブジェクトの情報が変更されていないことを条件とします。
整数の必要性から、アプリケーションの別の実行の同じアプリケーションに一貫していません。
等号(Object)メソッドは、2つのオブジェクトが等しい2、
これらの二つのように、同じ整数の結果を生成しなければならないhashCodeメソッドを呼び出して、各オブジェクトをオブジェクト。
3.記載のequals(java.lang.Objectの)メソッド、2つのオブジェクトが等しくない場合、
結果が異なる整数値にしなければならない任意のオブジェクトを必要としない2つのオブジェクトでhashCodeメソッドを呼び出します。
1 パブリック クラスHashCodeDemo { 2 公共 静的 ボイドメイン(文字列[]引数){ 3。 HashCodeDemo hashCodeDemo = 新しい新しいHashCodeDemo(); 4 // するSystem.out.println(hashCodeDemo.hashCode()); 5 // オブジェクトを作成する 。6 HashCodeDemo = hashCodeDemo1 新しい新しいHashCodeDemo(); 7 // 他のオブジェクト(メソッドEAQUALS受信パラメータ)を示す 8 // (オブジェクト呼び出しする方法に等しい)オブジェクトであるか否か「に等しいです」。 9 hashCodeDemo.equals(hashCodeDemo1); 10 A = 新たな新しい A(1 )、 11 A1は= 新しい A(1 )。 12 のSystem.out.println(a.hashCode())。 13 のSystem.out.println(a1.hashCode())。 14 15 のSystem.out.println( "==================" )。 16 // 第一次判断之后 17 18 a1.i = 2 。 19 のSystem.out.println(a.hashCode())。 20 のSystem.out.println(a1.hashCode())。 21 } 22 23 } 24 25 クラスA { 26 INT I。 27 int型J。 28 ダブルK; 29 公衆 A(INT I){ 30 この .I = I。 31 } 32 33 @Override 34 公共 int型のハッシュコード(){ 35 int型の結果、 36 長い一時。 37 結果= I。 38 結果= 31 *結果+ J。 39 TEMP = Double.doubleToLongBits(K)。 40 結果= 31 *結果+(INT)(TEMP ^(TEMP >>> 32 ))。 41 リターン結果; 42 } 43 }