文档章节

深入理解new String()

o
 osc_4nmshwhm
发布于 2018/08/07 08:41
字数 279
阅读 12
收藏 0
jdk

精选30+云产品,助力企业轻松上云!>>>

一、 引言

new String("hello")这样的创建方式,到底创建了几个String对象?

二、 分析

 1 String s1 = "HelloWorld";
 2 String s2 = new String("HelloWorld");
 3 String s3 = "Hello";
 4 String s4 = "World";
 5 String s5 = "Hello" + "World";
 6 String s6 = s3 + s4;
 7 
 8 System.out.println(s1 == s2);
 9 System.out.println(s1 == s5);
10 System.out.println(s1 == s6);
11 System.out.println(s1 == s6.intern());
12 System.out.println(s2 == s2.intern());//false true false true false

 

1. String s1 = "HelloWorld";

  去常量池查找,有则指向该地址,没有则在常量池创建后指向该地址。

  常量池:JDK7以后,从方法区,移到了堆中。

2. String s2 = new String("HelloWorld"); 

  • "HelloWorld" 去常量池查找,若有则返回该引用,没有则在常量池创建对象后返回该引用
  • 在堆里创建一个String对象

3. String s5 = "Hello" + "World";

  将"Hello" 与 "World" 拼接以后的"HelloWorld" 赋值给s5

4. String s6 = s3+s4;

  等价于 s6 = new String (s3+s4);

三、Intern

  intern用来返回常量池中的该字符串,如果常量池中已经存在该字符串,则直接返回常量池中该对象的引用。

  否则,在常量池中新建一个对象,然后 返回引用。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

es集群笔记

es 集群的默认配置是当集群中的某个节点磁盘达到使用率为 85% 的时候, 就不会在该节点进行创建副本, 当磁盘使用率达到 90% 的时候, 尝试将该节点的副本重分配到其他节点. 当磁盘使用率达到 ...

gaolongquan
18分钟前
10
0
VS Code编写Vue过程中出现空格不规范报错的问题

报错内容: 解决办法: 1.注释或删除这些代码 注释掉之后(重启vue服务),再进行编写的时候,空格不规范的情况下就不会再报错了。 2.如果没在webpack.dev.conf.js文件中找到注释代码就在webpack...

安然_oschina
21分钟前
16
0
域名防封_域名防红_微信域名防拦截

最近微信开始大封杀,不知道原因是什么,可能是因为违规网站太多了吧,很多网站都被错杀了,下面我们聊一下怎样才能避免域名被封杀呢。 在各种不同的域名当中,能够做出了更适合的选择,这些...

戚馨逸
25分钟前
13
0
数据结构(六)——循环链表

一、循序链表简介 1、循环链表的定义 循环链表的任意元素都有一个前驱和一个后继,所有数据元素在关系上构成逻辑上的环。 循环链表是一种特殊的单链表,尾结点的指针指向首结点的地址。 循环...

rainbowcode
28分钟前
13
0
六边形寻路格子绘制

using System.Collections;using System.Collections.Generic;using UnityEngine;public class AdventureIsland : MonoBehaviour{ static AdventureIsland instante; pu......

江湖令
29分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部