java.ほうそう
1. equals()
アドレス値の比較=ロールは、オブジェクトの参照変数を受信し、パラメータとして比較し、結果をブール値として通知します.値が自身と同じ場合はtrue、値が異なる場合はfalse
equalsは、2つの参照変数に格納されている値(アドレス値)が同じかどうかのみ判断できますが、以下の上書きを行うと、実際の値を比較することもできます.
public class Person {
long id;
@Override
public boolean equals(Object o) {
if (o != null && o instanceof Person)
return id == ((Person) o).id;
else
return false;
}
Person(long id) {
this.id = id;
}
}
public class EqualsEx2 {
public static void main(String[] args) {
Person p1 = new Person(801108111222L);
Person p2 = new Person(801108111222L);
if(p1 == p2) {
System.out.println("p1 과 p2 는 같은 사람");
} else {
System.out.println("p1과 p2 는 다른 사람");
}
// 주소값 비교
if (p1.equals(p2)) {
System.out.println("p1과 p2 같은 사람");
} else {
System.out.println("p1과 p2 다른 사람");
}
}
}
2. Hashcode()
オブジェクト自体のハッシュコードを返します.
オブジェクトのアドレス値を使用してハッシュコードを生成して返すため、異なる2つのオブジェクトに異なるハッシュコード値を持つことはできません.
public class HashCodeEx1 {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
}
}
3. toString()
インスタンス情報を文字列として提供する目的を定義します.
public String toString() {
return getClass().getName() + "@" + Integer.toJexString(hashCode());
}
public class CardToString {
public static void main(String[] args) {
Card c1 = new Card();
Card c2 = new Card();
System.out.println(c1.toString());
System.out.println(c2.toString());
}
}
火を通してご使用いただけますpublic class Card {
String kind;
int number;
Card() {
this("SPACE", 1);
}
Card(String kind, int num) {
this.kind = kind;
this.number = num;
}
public String toString() {
return "kind : " + kind + ", number : " + number;
}
}
4. clone()
自分をコピーして新しいインスタンスを作成します.オブジェクトクラスで定義されたclone()はインスタンス変数の値のみをコピーするため、参照タイプのインスタンス変数を持つクラスはインスタンスコピーを完全に行うことはできません.
単純な例)
public class Point implements Cloneable {
int x,y ;
Point (int x, int y) {
this.x = x;
this.y = y;
}
public String toString(){
return "x= " + x + ", y =" + y;
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e ) {}
return obj;
}
}
clone()を使用するには、まずコピーするクラスをcloneableインタフェースに実装し、clone()を上書きしながらアクセス制御プログラムを保護されたものから共通に変更する必要があります.public class CloneEx1 {
public static void main(String[] args) {
Point ori = new Point(3,5);
Point copy = (Point) ori.clone();
System.out.println(ori);
System.out.println(copy);
}
}
共通変換タイプ
:上書きする祖先メソッドの戻りタイプをサブクラスのタイプに変更できます.
例)
public Point clone() {
Object obj = null;
try {
obj = super.clone();
} catch ( CloneNotSupportedException e ) { }
return (Point) obj;
}
例)public class CloneEx2 {
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
int [] arrClone = arr.clone();
arrClone[0] = 6;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arrClone));
}
}
クローンは、単純コピーオブジェクトに格納されている値の얕은 복사
です.
オリジナルにコピーされて参照されるオブジェクトを깊은 복사
と呼びます.
5. getClass()
自分が属するクラスのクラスオブジェクトを返す方法.
クラスオブジェクトには、クラスのすべての情報が含まれています.各クラスは1つしかありません.クラスファイルがクラスローダからメモリにロードされると自動的に生成されます.まず、既存の作成されたクラスオブジェクトがメモリに存在するかどうかを確認している場合は、オブジェクトの参照を返します.存在しない場合は、クラスパスで指定されたパスに基づいてクラスファイルを検索します.見つからない場合はClassNotFoundExceptionが起動します
例)public class ClassEx1 {
public static void main(String[] args) throws Exception{
Card c = new Card("HEART", 3);
Card c2 = Card.class.newInstance();
Class cObj = c.getClass(); ㅌ
System.out.println(c);
System.out.println(c2);
System.out.println(cObj.getName());
System.out.println(cObj.toGenericString());
System.out.println(cObj.toString());
}
}
public class Person {
long id;
@Override
public boolean equals(Object o) {
if (o != null && o instanceof Person)
return id == ((Person) o).id;
else
return false;
}
Person(long id) {
this.id = id;
}
}
public class EqualsEx2 {
public static void main(String[] args) {
Person p1 = new Person(801108111222L);
Person p2 = new Person(801108111222L);
if(p1 == p2) {
System.out.println("p1 과 p2 는 같은 사람");
} else {
System.out.println("p1과 p2 는 다른 사람");
}
// 주소값 비교
if (p1.equals(p2)) {
System.out.println("p1과 p2 같은 사람");
} else {
System.out.println("p1과 p2 다른 사람");
}
}
}
オブジェクト自体のハッシュコードを返します.
オブジェクトのアドレス値を使用してハッシュコードを生成して返すため、異なる2つのオブジェクトに異なるハッシュコード値を持つことはできません.
public class HashCodeEx1 {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str1.hashCode());
System.out.println(str2.hashCode());
System.out.println(System.identityHashCode(str1));
System.out.println(System.identityHashCode(str2));
}
}
3. toString()
インスタンス情報を文字列として提供する目的を定義します.
public String toString() {
return getClass().getName() + "@" + Integer.toJexString(hashCode());
}
public class CardToString {
public static void main(String[] args) {
Card c1 = new Card();
Card c2 = new Card();
System.out.println(c1.toString());
System.out.println(c2.toString());
}
}
火を通してご使用いただけますpublic class Card {
String kind;
int number;
Card() {
this("SPACE", 1);
}
Card(String kind, int num) {
this.kind = kind;
this.number = num;
}
public String toString() {
return "kind : " + kind + ", number : " + number;
}
}
4. clone()
自分をコピーして新しいインスタンスを作成します.オブジェクトクラスで定義されたclone()はインスタンス変数の値のみをコピーするため、参照タイプのインスタンス変数を持つクラスはインスタンスコピーを完全に行うことはできません.
単純な例)
public class Point implements Cloneable {
int x,y ;
Point (int x, int y) {
this.x = x;
this.y = y;
}
public String toString(){
return "x= " + x + ", y =" + y;
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e ) {}
return obj;
}
}
clone()を使用するには、まずコピーするクラスをcloneableインタフェースに実装し、clone()を上書きしながらアクセス制御プログラムを保護されたものから共通に変更する必要があります.public class CloneEx1 {
public static void main(String[] args) {
Point ori = new Point(3,5);
Point copy = (Point) ori.clone();
System.out.println(ori);
System.out.println(copy);
}
}
共通変換タイプ
:上書きする祖先メソッドの戻りタイプをサブクラスのタイプに変更できます.
例)
public Point clone() {
Object obj = null;
try {
obj = super.clone();
} catch ( CloneNotSupportedException e ) { }
return (Point) obj;
}
例)public class CloneEx2 {
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
int [] arrClone = arr.clone();
arrClone[0] = 6;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arrClone));
}
}
クローンは、単純コピーオブジェクトに格納されている値の얕은 복사
です.
オリジナルにコピーされて参照されるオブジェクトを깊은 복사
と呼びます.
5. getClass()
自分が属するクラスのクラスオブジェクトを返す方法.
クラスオブジェクトには、クラスのすべての情報が含まれています.各クラスは1つしかありません.クラスファイルがクラスローダからメモリにロードされると自動的に生成されます.まず、既存の作成されたクラスオブジェクトがメモリに存在するかどうかを確認している場合は、オブジェクトの参照を返します.存在しない場合は、クラスパスで指定されたパスに基づいてクラスファイルを検索します.見つからない場合はClassNotFoundExceptionが起動します
例)public class ClassEx1 {
public static void main(String[] args) throws Exception{
Card c = new Card("HEART", 3);
Card c2 = Card.class.newInstance();
Class cObj = c.getClass(); ㅌ
System.out.println(c);
System.out.println(c2);
System.out.println(cObj.getName());
System.out.println(cObj.toGenericString());
System.out.println(cObj.toString());
}
}
public String toString() {
return getClass().getName() + "@" + Integer.toJexString(hashCode());
}
public class CardToString {
public static void main(String[] args) {
Card c1 = new Card();
Card c2 = new Card();
System.out.println(c1.toString());
System.out.println(c2.toString());
}
}
public class Card {
String kind;
int number;
Card() {
this("SPACE", 1);
}
Card(String kind, int num) {
this.kind = kind;
this.number = num;
}
public String toString() {
return "kind : " + kind + ", number : " + number;
}
}
自分をコピーして新しいインスタンスを作成します.オブジェクトクラスで定義されたclone()はインスタンス変数の値のみをコピーするため、参照タイプのインスタンス変数を持つクラスはインスタンスコピーを完全に行うことはできません.
単純な例)
public class Point implements Cloneable {
int x,y ;
Point (int x, int y) {
this.x = x;
this.y = y;
}
public String toString(){
return "x= " + x + ", y =" + y;
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e ) {}
return obj;
}
}
clone()を使用するには、まずコピーするクラスをcloneableインタフェースに実装し、clone()を上書きしながらアクセス制御プログラムを保護されたものから共通に変更する必要があります.public class CloneEx1 {
public static void main(String[] args) {
Point ori = new Point(3,5);
Point copy = (Point) ori.clone();
System.out.println(ori);
System.out.println(copy);
}
}
共通変換タイプ
:上書きする祖先メソッドの戻りタイプをサブクラスのタイプに変更できます.
例)
public Point clone() {
Object obj = null;
try {
obj = super.clone();
} catch ( CloneNotSupportedException e ) { }
return (Point) obj;
}
例)public class CloneEx2 {
public static void main(String[] args) {
int [] arr = {1,2,3,4,5};
int [] arrClone = arr.clone();
arrClone[0] = 6;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arrClone));
}
}
クローンは、単純コピーオブジェクトに格納されている値の
얕은 복사
です.オリジナルにコピーされて参照されるオブジェクトを
깊은 복사
と呼びます.5. getClass()
自分が属するクラスのクラスオブジェクトを返す方法.
クラスオブジェクトには、クラスのすべての情報が含まれています.各クラスは1つしかありません.クラスファイルがクラスローダからメモリにロードされると自動的に生成されます.まず、既存の作成されたクラスオブジェクトがメモリに存在するかどうかを確認している場合は、オブジェクトの参照を返します.存在しない場合は、クラスパスで指定されたパスに基づいてクラスファイルを検索します.見つからない場合はClassNotFoundExceptionが起動します
例)public class ClassEx1 {
public static void main(String[] args) throws Exception{
Card c = new Card("HEART", 3);
Card c2 = Card.class.newInstance();
Class cObj = c.getClass(); ㅌ
System.out.println(c);
System.out.println(c2);
System.out.println(cObj.getName());
System.out.println(cObj.toGenericString());
System.out.println(cObj.toString());
}
}
public class ClassEx1 {
public static void main(String[] args) throws Exception{
Card c = new Card("HEART", 3);
Card c2 = Card.class.newInstance();
Class cObj = c.getClass(); ㅌ
System.out.println(c);
System.out.println(c2);
System.out.println(cObj.getName());
System.out.println(cObj.toGenericString());
System.out.println(cObj.toString());
}
}
リファレンス
賈巴の」
Reference
この問題について(java.ほうそう), 我々は、より多くの情報をここで見つけました https://velog.io/@borab/java.lang-패키지テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol