Java学习笔记二十四:Java中的Object类
2018-06-10 23:28
232 查看
Java中的Object类
Object类中的方法,适合所有子类。
如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个字符串,是用来唯一区分对象的,可以想象为身份证号。
可以通过重写toString()方法表示出对象的属性
举一个例子:
Initail主函数:
Dog类:
Animal类:
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610225830371-305717927.png)
此时我们看到它输出的是dog类的包名+dog对象在内存中的地址
重写从父类继承来的toString)方法:
在Eclipse中的source下选择
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230210871-524155475.png)
选项
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230257068-715818791.png)
确认即可完成
修改后的Dog类:
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230423984-1693800075.png)
此时便输出了对象属性的值。
Dog dog = new Dog();
这个dog对象并不是我们创建的对象,而是对象在内存中的地址,在操作对象的地址的时候相当于间接操作了对象的值。这个dog就是引用。
一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。
举一个例子:
主函数Initail:
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610231739998-1768859230.png)
虽然我们赋给对象的值是相同的,但是new两个对象其实是开辟了两个不同的内存空间,因为equals对比两个内存地址是否相同,所以两个对象不同。
重写方法:
我们选择eclipse的source下的
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610232034713-2017617674.png)
选项
Initail类:
Dog类:
其中:getClass()方法比较两个类对象是否相同,类对象和类的对象的关注点如下
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610232523938-716180903.png)
运行结果为:
一:什么是Object类;
Object类是所有类的父类,相当于所有类的老祖宗,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。Object类中的方法,适合所有子类。
二:toString()方法;
在OBject类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)。如果我们在代码里直接输出一个对象,你会发现它输出的这个对象在内存中的地址,我们把它称为哈希码,它是通过哈希算法生成的一个字符串,是用来唯一区分对象的,可以想象为身份证号。
可以通过重写toString()方法表示出对象的属性
举一个例子:
Initail主函数:
package com.test; public class Initail { public static void main(String[]args){ Dog dog = new Dog();//这里我们定义了一个dog对象 System.out.println(dog);//我们如果现在输入dog的值 } }
Dog类:
package com.test; //Dog对象继承于Animal类 public class Dog extends Animal{ public int age = 20; public void eat(){ System.out.println("狗有吃骨头的能力"); } public Dog(){ System.out.println("Dog类执行了"); } public void method(){ eat(); } }
Animal类:
package com.test; //Animal类并没有明确表明它继承于那个类,他就相当于继承了Object类 public class Animal extends Object{ public int age=10;//为属性赋初值 public String name; public void eat(){ System.out.println("动物是可以吃东西的"); } public Animal(){ System.out.println("Animal类执行了"); } }
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610225830371-305717927.png)
此时我们看到它输出的是dog类的包名+dog对象在内存中的地址
重写从父类继承来的toString)方法:
在Eclipse中的source下选择
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230210871-524155475.png)
选项
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230257068-715818791.png)
确认即可完成
修改后的Dog类:
package com.test; //Dog对象继承于Animal类 public class Dog extends Animal{ public int age = 20; public void eat(){ System.out.println("狗有吃骨头的能力"); } public Dog(){ System.out.println("Dog类执行了"); } @Override public String toString() { return "Dog [age=" + age + "]"; } public void method(){ eat(); } }
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610230423984-1693800075.png)
此时便输出了对象属性的值。
三:equals()方法;
equals()方法比较的是对象的引用是否指向同一块内存地址Dog dog = new Dog();
这个dog对象并不是我们创建的对象,而是对象在内存中的地址,在操作对象的地址的时候相当于间接操作了对象的值。这个dog就是引用。
一般情况下比较两个对象时比较他的值是否一致,所以要进行重写。
举一个例子:
主函数Initail:
package com.test; public class Initail { public static void main(String[]args){ Dog dog = new Dog();//这里我们定义了一个dog对象 dog.age = 15; Dog dog2 = new Dog();//继续创建一个dog对象 dog2.age = 15; //比较两个对象是否符合equals if(dog.equals(dog2)){ System.out.println("两个对象是相同的"); } else{ System.out.println("两个对象是不相同的"); } } }
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610231739998-1768859230.png)
虽然我们赋给对象的值是相同的,但是new两个对象其实是开辟了两个不同的内存空间,因为equals对比两个内存地址是否相同,所以两个对象不同。
重写方法:
我们选择eclipse的source下的
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610232034713-2017617674.png)
选项
Initail类:
package com.test; public class Initail { public static void main(String[]args){ Dog dog = new Dog();//这里我们定义了一个dog对象 dog.age = 15; Dog dog2 = new Dog();//继续创建一个dog对象 dog2.age = 15; //比较两个对象是否符合equals if(dog.equals(dog2)){ System.out.println("两个对象是相同的"); } else{ System.out.println("两个对象是不相同的"); } } }
Dog类:
package com.test; //Dog对象继承于Animal类 public class Dog extends Animal{ public int age = 20; public void eat(){ System.out.println("狗有吃骨头的能力"); } public Dog(){ System.out.println("Dog类执行了"); } @Override public String toString() { return "Dog [age=" + age + "]"; } public void method(){ eat(); } @Override public boolean equals(Object obj) { if (this == obj)//判断两个引用的值是否相同 return true; if (obj == null) return false; if (getClass() != obj.getClass())//判断两个对象的类型是否相同 return false; Dog other = (Dog) obj; if (age != other.age)//两个属性的属性值是否相同 return false; return true; } }
其中:getClass()方法比较两个类对象是否相同,类对象和类的对象的关注点如下
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610232523938-716180903.png)
运行结果为:
![](https://images2018.cnblogs.com/blog/1411166/201806/1411166-20180610232731108-895301424.png)
相关文章推荐
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<JDBC>(二十四)
- 多态Object类equals方法学习笔记ObjectDemo.java
- Java学习笔记(6)——Object类
- JAVA学习笔记(十七)- Object类和包装类
- java学习笔记-object类
- 【JAVA学习】EffectiveJava的学习笔记--第二章 Object类的通用方法
- Java菜鸟学习笔记--面向对象篇(十六):Object类方法
- Java 学习笔记(0x09) object类
- java学习笔记(二十四)注册登录系统
- j2se学习笔记-java.lang中的object类
- java学习笔记(1)-Object类
- Java学习笔记(二十四):微信获取临时素材,然后存到oss
- Java基础学习笔记二十四 MySQL安装图解
- java学习记录笔记--继承,super,Object类
- java学习笔记6--类的继承、Object类
- Java学习笔记五:Object类,equals ==,toString
- Java菜鸟学习笔记--面向对象篇(十六):Object类方法
- [置顶] JavaSE学习笔记_6:Java-Object类
- java 从零开始,学习笔记之基础入门<JDBC>(二十四)
- JAVA学习笔记(二十四) - Properties类和Collections工具类