· 超过17用户采纳过TA的回答
如果常量池是游离于堆和栈之外的那堆和栈之外肯定也不止有常量池吧,比如方法区那是否还有其他更多的内存块呢?(/晕
算了其实我们老咾实实地用a.equals(b)就完事了,这些东西和平时开发也没啥关系
我最近刚学java今天编程的时候就遇到一个棘手的问题,就是关于判断两个比较字符串相等是否相等的问题在编程中,通常比较两个比较字符串相等是否相同的表达式是“==”,但在java中不能这么写在java中,用的是equals();
例:A比较字符串相等和B和比较字符串相等比较:
String 的equals 方法用于比较两个比较字符串相等是否相等由于仳较字符串相等是对象类型,所以不能用简单的“==”判断而使用equals比较两个对象的内容是否相等。
equals()比较的是对象的内容(区分字母的大小寫格式)但是如果使用“==”比较两个对象时,比较的是两个对象的内存地址所以不相等。即使它们内容相等但是不同对象的内存地址也是不相同的。
如果常量池是游离于堆和栈之外的那堆和栈之外肯定也不止有常量池吧,比如方法区那是否还有其他更多的内存块呢?(/晕
算了其实我们老咾实实地用a.equals(b)就完事了,这些东西和平时开发也没啥关系
因为c是通过比较字符串相等引用+比较字符串相等常亮的方法连接产生的,那么c就是獨立的新开辟的内存地址,所以==结果为false,当且仅当,==两端的比较字符串相等都是来自比较字符串相等常量池的时候,才可以用==得到true的结果
同样地,你的问题也是这样子的
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案