问问题描述
答精选答案

关于“==”在Java语言中,当用“==”匹配时,就是比较两个内存单元的内容是否一样。
如果是基本类型byte、boolean、short、char、int、float、double,就是直接比较的他们的值。如果是引用类型,比较的就是引用的值,“引用的值”可以被认为是对象逻辑地址。如果引用类型用“==”就是比较的两个对象的地址是否相同。那么为什么例子中a与b指向了同一个内存单元?这就是JVM的“编译时优化”,当编译器在编译代码:String a = "a" + "b" + "2"; 时,会将其编译为,String a = "ab2"; 。因此 a == b 为true。关于equals()说到 “==” 不得不说一下equals()。equals()是在Object类中被定义的,它的定义中就是使用 == 来匹配,也就是说如果不重写equals() 比较的也是引用地址。equals()的存在就是为了希望子类去重写,用于比较值,不去比较引用地址。String 类中的就是重写了equals(), 如下:所以我们在比较String时都是用了equals()方法。总结“==” 基本类型比较值,引用类型比较引用地址。String “+” 操作 JVM编译时会做优化。equals()方法,不重写比较的也是引用地址。
本文来自作者[chongqingshifandaxue]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jingxuan/778778.html
评论列表(4条)
我是公众科技网的签约作者“chongqingshifandaxue”!
希望本篇文章《string是什么类型的》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:关于“==”在Java语言中,当用“==”匹配时,就是比较两个内存单元的内容是否一样。如果是基本类型byte、boolean、short、char、int、float、double,就是直接比较的他们的值。如果是引用类型,比较的就是引用的值,“引用的值”可以被认为是对象逻辑地址。如果引用类型用“==”就是比较的两个对象的地址是否相同。那么为什么例子中a与b指向了同一个内存单元?这就是JVM的“编译时优化”,当编译器在编译代码:String a = "a" + "b" + "2"; 时,会将其编译为,Str