加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

对于String对象,可以使用"="赋值,也可以使用"n

发布时间:2020-12-14 06:30:20 所属栏目:Java 来源:网络整理
导读:当你看见这个标题的时候,你可能会下意识的去想一下,这两种方式到底有什么样的区别呢? 且看下面的demo,自然便区分开了 String testStrA = "abc" String testStrB = String("abc" System.out.println("testStrA == testStrB ? " + (testStrA == testStrB ?

当你看见这个标题的时候,你可能会下意识的去想一下,这两种方式到底有什么样的区别呢?

且看下面的demo,自然便区分开了

String testStrA = "abc" String testStrB = String("abc" System.out.println("testStrA == testStrB ? " + (testStrA == testStrB ? : String testStrC = "abc" System.out.println("testStrA == testStrC ? " + (testStrA == testStrC ? : String testStrD = "ab" String testStrE = "c" String testStrF = testStrD + System.out.println("testStrA == testStrF ? " + (testStrA == tsetStrF ? : }

运行效果:

testStrA == testStrB ? == testStrC ? == testStrF ?

我们来分析一下,为什么会出现这样的结果:

首先我们要明白的是

String testStrA = "abc";

这样的代码,可能会创建一个对象或者不会创建对象:这里会出现一个名词“字符串实例池”

这个名词很形象,在这个字符串实例池中,存放着很多字符串,可能包含有字符串:"abc",所以

在这种情况下面,上面的语句是不会创建对象的,而是直接引用池子中的字符串:"abc";

如果字符串"abc"在实例池中并不存在,那么这时,就会初始化一个字符串:"abc",即创建

一个字符串对象:"abc",并且会把创建好的字符串放入到"字符串实例池"中。

String testStrB = String("abc");

对于关键字:new ,即会产生新的对象,也就是说,每次都会产生新的字符串对象

这样,对于第一个结果:

testStrA == testStrB ?

我们就知道了,原来是这样的。

而对于第二个结果:

testStrA == testStrC ?

只要我们对"字符串实例池"有一个印象,这也是不难理解的。

最后是第三个结果:

testStrA == testStrF ?

这个要稍微难理解一些。

String testStrD = "ab" String testStrE = "c" String testStrF = testStrD + testStrE;

字符串testStrD和testStrE都是字符串常量,所以他们在代码编译的时期就已经是确定好的了,

但是对testStrF来说,他的值是testStrD和testStrE的引用,所以不会在编译时期确定,实际上

testStrF类似于新建了一个对象出来,然后把所创建的对象的引用赋值给了testStrF。

所以出现第三个结果也是情理之中的事情...

========================================================

More reading,and english is important.

I'm Hongten

大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。Hongten博客排名在100名以内。粉丝过千。Hongten出品,必是精品。

E | hongtenzone@foxmail.com ?B |?

========================================================

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读