您好、欢迎来到现金彩票网!
当前位置:21点 > 字符串 >

java里用“==”比较两个字符串的问题

发布时间:2019-07-25 11:16 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  字符串之所以特殊,是因为java会在内容中为String类型的对像开辟一个空间,我们叫他串池!

  对于String只要用new关键字new出来的string,都是单独的一个对象。

  而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。

  而String中的equls方法已经做了处理,他是比较内容,所以要比较string的内容的时候而不是地址的时候,那就用它吧!

  展开全部String s2 = abc 表明s2与一个“字符串常量”对应 这个字符串常量是在编译期确定的 因此只要是跟相同的字符串常量对应的变量都相等 这也就是你的s2==s3为true的原因

  * String 类创建的时候,检查字符串abc是否在pool中已经存在,存在的话就会共享。

  定义一个S2引用,指向常量字符串池的abc;[有存在的就共享]

  定义一个S3引用,指向常量字符串池的abc;[有存在的就共享]

  1 定义一个S4引用,指向对象new String(abc);这会在堆内存中再开一个对象,此对象也是志向常量池中的abc;但对象各是各,它们的堆内存地址可不样。

  再明确一点就是:==比较的是内存地址,栈内存中的引用存放的内容就是其所志向的对象的堆内存地址,也就是S1,2,3,4[可以这么理解]

  s2和s3引用的是一个字符串,因s3会到字符串池中找知否有“abc,将其引用直接给s3。

http://magaltouba.com/zifuchuan/362.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有