请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Java连载57-equals重写、finalize方法、hashCode方法

[复制链接]
查看: 47|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
47993
发表于 2019-12-4 02:31 | 显示全部楼层 |阅读模式
一、关于java说话中怎样比力两个字符串能否齐截
1.不能利用双等号来比力两个字符串能否相当,应当利用equals方式举行比力,如例子
  1. package com.bjpowernode.java_learning;public class D57_1_ {  public static void main(String[] args){    String s1 = new String("ABC");    String s2 = new String("ABC");    System.out.println(s1 == s2);//false,这是由于这个两个工具作比力,比力的是工具的地点    System.out.println(s1.equals(s2));//equals方式才是比力字符串里面的值     }}
复制代码
Java连载57-equals重写、finalize方法、hashCode方法  游戏 1707435-20191204001950029-1542431763

2.重写类的equals可以到达判定工具内部的能否齐截的成果,而不是利用类本来的对照地点的感化
  1. package com.bjpowernode.java_learning;public class D56_2_equalsMethodAnalysis {  public static void main(String[] args) {    Object o1 = new Object();    Object o2 = new Object();    boolean b1 = o1.equals(o2);    System.out.println(b1);    Star56 s1 = new Star56(100,"xiaoming");    Star56 s2 = new Star56(100,"xiaoming");    System.out.println(s1.equals(s2));    //这样比力出来的是false,由于比力的是两个工具的内存地点,可是这样明显是不合适我们的预期    //实在我们想要比力的是两个工具里面的内容能否是齐截的。因而我们重写     }}class Star56{  int id;  String name;  public Star56(int id,String name) {    this.id = id;    this.name = name;  }  public boolean equals(Object obj) {    if(obj instanceof Star56) {//逼迫典范转换,必须先做判定,两者能否存在继续关系      Star56 s = (Star56)obj;      if (s.id == this.id && s.name.equals(this.name)) {        return true;      }    }    return false;  }}
复制代码
Java连载57-equals重写、finalize方法、hashCode方法  游戏 1707435-20191204002046295-949402976

二、finalize方式、hashCode方式
1.finalize方式每个java工具都有
2.finalize方式不需要步伐员去挪用,由系统挪用
3.java工具假如没有更多的援用去指向它,则该java工具成为渣滓数据,等待渣滓采纳器的采纳,渣滓采纳器在采纳这个java工具之前那会自动挪用该工具的finalize方式。
finalize方式是该工具啊立即就要被采纳了,例如:需要开释资本,则可以在该方式中开释。
  1. package com.bjpowernode.java_learning;public class D57_2_MethodOfFinalize {  public static void main(String[] args) {    Person57 p1 = new Person57();    p1 = null;//没有援用在指向它,等待被采纳    //步伐员只能去“倡议”渣滓采纳器采纳渣滓    System.gc();//这个就是系统       //利用hashcode方式,返回的是该工具的哈希值,java工具的内存地点经过哈希算法获得的int典范的值    Person57 p2 = new Person57();    System.out.println(p2.hashCode());       //利用clone()方式,可以对一个工具举行复制一份,避免把本来的工具内容给破坏了  }}class Person57{  //重写Object方式中的fianlize方式  public void fianlize() throws Throwable{//至于为什么这么写,临时不用晓得,由于源码中就是这样写的,我们重写里面的函数体就行了    System.out.println(this + "立即就要被采纳了");    //可以重写finalize方式,比如里面重写给工具指定援用,以此来减缓,工具要被渣滓采纳器采纳  }}
复制代码
Java连载57-equals重写、finalize方法、hashCode方法  游戏 1707435-20191204002117025-257619052

三、源码:
D57_1_CompareString.java
D57_2_MethodOfFinalize.java
地点:
https://github.com/ruigege66/Java/blob/master/D57_1_CompareString.java
https://github.com/ruigege66/Java/blob/master/D57_2_MethodOfFinalize.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.接待关注微信公众号:傅里叶变更,小我公众号,仅用于进修交换,布景复兴”礼包“,获得大数据进修材料
Java连载57-equals重写、finalize方法、hashCode方法  游戏 1707435-20191204002144494-81644083



免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表