日志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));
}
}
指示其他某个对象是否与此对象“相等”。
自反性:对于任何非空引用值
对称性:对于任何非空引用值
传递性:对于任何非空引用值
一致性:对于任何非空引用值
对于任何非空引用值
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
返回该对象的哈希码值。支持此方法是为了提高哈希表(例如
在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用
如果根据
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
返回:此对象的一个哈希码值。
返回该对象的字符串表示。通常,
返回:该对象的字符串表示形式。
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())
返回:该对象的字符串表示形式。
相关文章推荐
- Android 读取目录中的文件列表并展示
- 博客搬家公告
- session释放函数
- edx devstack 安装
- 【Theano】学习笔记-1-什么是Theano?有哪些优点?
- 亚当·扎加耶夫斯基诗十二首
- Selected SVN connector library is not available or cannot be loaded
- USACO Section 2.2 Subset Sums
- android 自动拨打含“#”如:*1234#的电话
- spring mvc的配置文件解析
- Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无效)?
- AsyncTask 的参数
- centos7.1下yum安装并使用apache web服务器
- vim头文件的跳转
- qemu1.0编译及kvm支持
- RFC6551中文版:Routing Metrics Used for Path Calculation
- 对比windows和linux的对父进程的文件描述符继承的设置
- JSP取得绝对路径
- JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
- ORACLE--集合