您的位置:首页 > 编程语言 > Java开发

java中的==和equals的区别

2017-04-21 12:01 225 查看
今天在做项目中发现一个Java基本的知识点,filterStr 从数据库中读出为"',执行下面的结果竟然为true

String filterStr = SystemConfigUtils.getSystemConfig(SystemConfigUtils.FILTERCOMMENTTEXT);
if(filterStr!=null&&!""!=filterStr){
filters = filterStr.split(";");
}

这个让我突然理解不了了,仔细研究才发现一个基本的问题,就是== 和equals的简单理解为,

(1)八种基本数据类型,boolean 、byte、char、short、int、long、float、double、他们之间的比较,应用双等号(==),比较的是他们的值。

(2)对于复合类型或者Java类,==比较的是内存地址,equals比较的也是内存地址,但是如String,Integer,Date在这些类中equals的方法被覆写了,比较的是数据值。因此 对于复合数据类型的equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Object的equals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

因此将上面改为:

String filterStr = SystemConfigUtils.getSystemConfig(SystemConfigUtils.FILTERCOMMENTTEXT);
if(filterStr!=null&&!"".equals(filterStr)){
filters = filterStr.split(";");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java