java学习初探6之Object类
来源:互联网 发布:怎么申请软件著作权 编辑:程序博客网 时间:2024/05/20 02:54
1.Object类
toString
package since;/* * Object中toString方法 * 返回该对象的字符串表示。 * * 在现实开发中,Object中toString方法不够用,因为Object的toString的实现结果不满意。 * * Object中的toString方法就要被重写的。 * * SUN是这样实现toString方法的: * public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } * 类名@java对象的内存地址经过哈希算法得出的int类型值再转换成十六进制 * */public class Test01 { public static void main(String[] args) { Object object=new Object(); String o=object.toString(); System.out.println(o);//java.lang.Object@15db9742 Person person=new Person("张三",40); System.out.println(person.toString());//Person[name=张三,age=40] //print方法后面括号中如果是一个引用类型,默认调用引用类型的toString方法 System.out.println(person);//Person[name=张三,age=40] }} class Person{ String name; int age; public Person(String name,int age) { this.name=name; this.age=age; // TODO Auto-generated constructor stub } //重写toString,根据项目需求而定 //显示格式:Person[name=刘德华,age=50] public String toString(){ return "Person[name="+name+",age="+age+"]"; } }
equals
package since;/* * 关于Object中equals方法实现方法 * * public boolean equals(Object obj) { return (this == obj); } o1.equals(o2); o1是this,o2是obj ==两边如果是引用类型,则比较内存地址,地址相同是true,不同为false */public class Test02 { public static void main(String[] args) { Object o1=new Object(); Object o2=new Object(); boolean test=o1.equals(o2); System.out.println(test);//false Star s1=new Star(1000, "章子怡"); Star s2=new Star(1000, "章子怡"); System.out.println(s1.equals(s2));//true }}class Star{ int id;//身份证号 String name;//姓名 public Star(int id,String name) { this.id=id; this.name=name;} //Object中的equals方法比较的是内存地址, //在现实业务逻辑中,不应该比较内存地址,应该比较内容 //重写equals //根据需求规定重写,如果身份证号和名字都一致,是同一个人 public boolean equals(Object object){ if(object instanceof Star){ Star s=(Star)object; if(this.id==s.id&&this.name.equals(s.name)){//这里字符串equals,sun重写过,用来比较字符串内容是否相等 return true; }else { return false; } }else { return false; } }}
finalize
垃圾回收器(GC)
package since;/* finalize方法什么时候调用? 1.finalize方法每个java对象都有 2.finalize方法不需要程序员去调用,由系统自动调用 3.java对象如果没有更多引用指向它,则该对象成为垃圾数据, 等待垃圾回收器的回收,垃圾回收器在回收这个java对象之前会自动 调用该对象的finalize方法。 finalize方法是该对象马上就要被回收了,例如:需要释放资源,则可以在该方法中释放。 */public class Test04 { public static void main(String[] args) { People p1=new People(); p1=null;//没有引用再指向它,等待回收 //程序员只能“建议”垃圾回收器回收垃圾 System.gc(); }}class People{ //重写finalize方法 protected void finalize() throws Throwable { System.out.println(this+"马上就要被回收了"); //让引用再次重新指向该对象,该对象不是垃圾,不会被垃圾回收器回收 People p=this; }}
hashCode()
package since;/* hashCode方法: * public native int hashCode(); * 其中native与底层(动态链接库)c++关联,其实上述方法是有方法实体的,更不是抽象方法 */public class Test05 {public static void main(String[] args) { //返回的是该对象的哈希码值 //java对象的内存地址经过哈希算法得到的int类型的数值 Test05 test05=new Test05(); System.out.println(test05.hashCode());//366712642}}
阅读全文
0 0
- java学习初探6之Object类
- Java Object类初探
- Java学习之Object类
- java学习初探6之super final 抽象类
- java学习初探6之接口
- java学习初探6之UML
- java学习初探十之包装类
- Java类库学习之Object类
- java学习之路---Object类
- java学习123之Object类
- java学习之Object类常用方法
- JAVA学习之Object基础
- java学习初探6之继承 方法覆盖 多态
- java学习初探十四之Collections工具类
- Java线程学习之线程初探
- Java学习笔记之反射机制初探
- java学习初探2之语言基础
- java学习初探3之方法使用
- JMeter学习-003-JMeter与LoadRunner的异曲同工
- pandas IO numpy 矩阵
- migrate 和makemigrations的差别
- PowerDesigner 添加默认字段注释
- POJ3661 Running 【动态规划】
- java学习初探6之Object类
- 深入理解JVM之JVM内存区域与内存分配
- Hyperledger Fabric 1.0镜像下载
- JMeter学习-004-WEB脚本入门实战
- 微信公众号开发实例
- Android6.0 设置默认输入法
- 曾鸣:跟马云创业总结的四个心得 | 阿里内部干货
- C++中引用(&)的用法和应用实例
- ajax替换表单数据