您的位置:首页 > 其它

日志2016-1-11

2016-01-11 19:26 190 查看
package day;

class Singleton extends Object{

private static Singleton instance = null;

private Singleton(){

}
public static Singleton getInstance(){
if (instance == null){
instance = new Singleton();
}
return instance;
}

}

package day;
class Animal{

}

class Cat extends Animal{

}

public class Instanceof {

public static void main(String[] args){

Cat cat = new Cat();

if(cat instanceof Cat){
System.out.println("yes");
}else{
System.out.println("no");
}

Animal animal = new Cat();
//Animal animal = new Animal();
//得到结果为NO

if(animal instanceof Cat){
System.out.println("yes");
}else{
System.out.println("no");
}

if(cat instanceof Animal){
System.out.println("yes");
}else{
System.out.println("no");
}
}

}

package day;

public class Test {

public static void main(String[] args){
//Singleton instance = new Singleton();
//System.out.println(instance.hashCode);
//Singleton instance2 = new Singleton();
//System.out.println(instance2.hashCode);

//静态访问
Singleton instance = Singleton.getInstance();
System.out.println(instance.hashCode());
Singleton instance2 = Singleton.getInstance();
System.out.println(instance2.hashCode());

System.out.println(instance==instance2);

System.out.println(instance.equals(instance2));
}

}

package day2;
/**
 * entity
 */
public class Person {

private String name;
private int age;
private String color;

public Person(){

}
public Person(String name,int age,String color){
this.name = name;
this.age = age;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}

@Override
public int hashCode() {
return super.hashCode();
}

@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(obj instanceof Person){
Person p = (Person) obj;

if (this.name.equals(p.name)){
return true;
}
}
return false;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", color=" + color
+ "]";
}

}

package day2;

public class Test {

public static void main(String[] args){

Person p1 = new Person("折耳",3,"灰白色");
Person p2 = new Person("波斯",4,"白色");
Person p3 = new Person("三色",3,"棕黑黄");

System.out.println(p1.hashCode());
System.out.println(p2.hashCode());
System.out.println(p3.hashCode());

System.out.println(p1.equals(p2));
System.out.println(p1.equals(p3));
System.out.println(p2.equals(p3));
}
}

equals

public boolean equals(Object obj)

指示其他某个对象是否与此对象“相等”。
equals
 方法在非空对象引用上实现相等关系:
自反性:对于任何非空引用值 
x
x.equals(x)
 都应返回 
true

对称性:对于任何非空引用值 
x
 和 
y
,当且仅当 
y.equals(x)
 返回 
true
 时,
x.equals(y)
 才应返回
true

传递性:对于任何非空引用值 
x
y
 和 
z
,如果 
x.equals(y)
 返回 
true
,并且 
y.equals(z)
 返回
true
,那么 
x.equals(z)
 应返回 
true

一致性:对于任何非空引用值 
x
 和 
y
,多次调用 x.equals(y) 始终返回 
true
 或始终返回 
false
,前提是对象上 
equals
 比较中所用的信息没有被修改。
对于任何非空引用值 
x
x.equals(null)
 都应返回 
false

Object
 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 
x
 和 
y
,当且仅当 
x
 和 
y
 引用同一个对象时,此方法才返回 
true
x == y
 具有值 
true
)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

hashCode

public int hashCode()


返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 
java.util.Hashtable
 提供的哈希表)的性能。
hashCode
 的常规协定是:
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用
hashCode
 方法都必须生成相同的整数结果。
如果根据 
equals(java.lang.Object)
 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不 要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

返回:此对象的一个哈希码值。

toString

public String toString()

返回该对象的字符串表示。通常,
toString
 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
Object
 类的 
toString
 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“
@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:

getClass().getName() + '@' + Integer.toHexString(hashCode())


返回:该对象的字符串表示形式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: