如果不存在,则在字符串池中创建"abc"这个对象,然后将池中"abc"这个对象的引用地址返回给"abc"对象的引用s1,这样s1会指向池中"abc"这个字符串对象;如果存在,则不创建任何对象,直接将池中"abc"这个对象的地址返回,赋给引用s2。
翻译:String类的intern()方法:一个初始为空的字符串池,它由类String独自维护。当调用 intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(oject)方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并返回此String对象(注意是常量池中的对象,不是堆中的对象)的引用。对于任意...
答案是有5个。每一个+都会产生一个字符串,因此如果你不用StringBuilder则每多一个+就会多产生2个字符串。而如果你写成:StringBuilderstrb=newStringBuilder("abc");strb.append("hello");strb.append("world");这里只有3个字符串常量和一个StringBuffer对象。每多append一个新的字符串,最多多出一个...
pool and a reference to this String object is returned. 翻译过来就是:一个初始为空的字符串池,它由类String独自维护。当调用 intern方法时,如果常量池已经包含一个等于此String对象的字符串(用equals(oject)方法确定),则返回池中的字符串。否则,将此String对象添加到池中,并返回此String对象的引用。 示例程序...
先下结论:对象! 众所周知,JDK1.8版本中,String常量池已经从方法区中的运行时常量池分离到堆中了,那么在堆中的String常量池里存的是String对象还是引用呢?我在网上查了一晚上,各有各的说法,最后索性直接查看API(果然API才是最强大的!!!),废话少说,直接上图: 翻译一下,String类的intern()方法:一个初始为空的...
写这句话的时候,会在常量池先找有没有123这个字符串对象如果没有,他就开始抽取,1,2,3 然后拼接成一个对象即:"123";假如后面又来一个也需要这个对象,比如说s1="123";这个时候在操作s1的时候还是先去常量池找有没有这个对象,如果有,直接把地址拿过来,因为常量池数据为共享的,假如这个时候s1="...
2019-12-05 20:36 −String s1 = "a" 时,首先会在字符串常量池中查找有无 “a” 这个对象。 若没找到,就创建一个 "a" 对象, 然后,以 s1 为它的引用。若在字符串常量池中找到了 “a” 这个对象, 同样也将 s1 作为它的引用。 若再执行一次 Stri... ...
JDK1.8字符串常量池里存的是String对象还是引用?https://www.cnblogs.com/flyingrun/p/12781257.html 梅花香自古寒来 分类: java基础 好文要顶 关注我 收藏该文 微信分享 那些年的代码 粉丝- 142 关注- 33 +加关注 0 0 升级成为会员 « 上一篇: SQL题:一个表中的ID字段是可以重复的,把该表...