对Java创建String是否放入String pool作代码性的试验。

参考的优秀文章

JAVA面试题解惑系列(二)——到底创建了几个String对象?

public String(String original) API

public String intern() API

版本说明

JDK 1.7.0_71

new String() 与 intern()

package com.nicchagil.commonstudy.No01String的池;

public class Call {

    public static void main(String[] args) {
String a = "abc";
String b = "abc";
String c = new String(a);
String d = "ab" + "c";
String e = "abc".intern();
String f = new String(a).intern(); System.out.println("a == b : " + (a == b));
System.out.println("a == c : " + (a == c));
System.out.println("a == d : " + (a == d));
System.out.println("a == e : " + (a == e));
System.out.println("a == f : " + (a == f));
} }

日志

a == b : true
a == c : false
a == d : true
a == e : true
a == f : true

变量、常量字符串拼接,他们是否放入String Pool?

package com.nicchagil.commonstudy.No01String的池;

public class Call2 {

    public static void main(String[] args) {
final String A = "123";
final String B = "456";
String C = "123456";
String a = "123";
String b = "456"; System.out.println("C == (A + B) : " + (C == (A + B))); // A、B为final类型
System.out.println("C == (\"123\" + \"456\") : " + (C == ("123" + "456"))); // "123"、"456"为常量
System.out.println("C == (a + b) : " + (C == (a + b))); // a、b为变量
System.out.println("C == (a + \"456\") : " + (C == (a + "456"))); // a为变量
System.out.println("C == (a + b).intern() : " + (C == (a + b).intern())); // 使用intern()方法
} }

日志

C == (A + B) : true
C == ("123" + "456") : true
C == (a + b) : false
C == (a + "456") : false
C == (a + b).intern() : true

注意

本日志打印的结果为上文JDK所运行的结果。

【Java】Java创建String时,什么情况放进String Pool?的更多相关文章

  1. c++中字符输入函数cin.getline在输入char与string时的不同

    cin.getline在输入char时: using namespace std; ; char name[ArSize]; char dessert[ArSize]; cout << & ...

  2. java实现创建临时文件然后在程序退出时自动删除文件(转)

    这篇文章主要介绍了java实现创建临时文件然后在程序退出时自动删除文件,从个人项目中提取出来的,小伙伴们可以直接拿走使用. 通过java的File类创建临时文件,然后在程序退出时自动删除临时文件.下面 ...

  3. Java 关于创建String对象过程的内存分配

    一.String s = "abc"  和 String s = new String("abc") 的区别 1.String s = "abc&qu ...

  4. Java中创建String的两种方式

    1.在Java中,创建一个字符串有两种方式 String x = "abc";String y = new String("abc"); 这两种方式有什么区别呢 ...

  5. java中创建字符串的两种方式(“”与new String())及区别

    结论:通过""创建的字符串实际上在java堆中只有一个,而通过new string创建出来的字符串在java堆中占有不同的内存. 第一个True表明这两个在内存中拥有相同的地址,那 ...

  6. Java中创建String的两种方式差异

    我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd"; String str2 = new String("abcd&qu ...

  7. java 面向对象(四十):反射(四)反射应用一:创建运行时类的对象

    1.代码举例Class<Person> clazz = Person.class; Person obj = clazz.newInstance();System.out.println( ...

  8. Java堆、栈和常量池以及相关String的详细讲解(经典中的经典) (转)

    原文链接 : http://www.cnblogs.com/xiohao/p/4296088.html 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的 ...

  9. Java堆、栈和常量池以及相关String的详细讲解

    一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...

随机推荐

  1. ol,ul,dl,table标签的基本语法

    ol,ul,dl,table标签的基本语法 有序列表: 无序列表:                                  自定义列表: <ol> <ul> < ...

  2. mysql建库DATETIME、DATE 和 TIMESTAMP区别

    http://blog.sina.com.cn/s/blog_5f7b8c2c0100tf6t.html     DATETIME.DATE 和 TIMESTAMP 类型是相似的.本篇描述了它们的特性 ...

  3. unable to connect to the virtual device Genymotion 神器启动问题

    截图: 解决方法:win7以上用户在桌面找到:网络--右键(属性)--更改适配器设置--VirtualBox Host-Only Network--属性--双击:Internet 协议版本4(TCP/ ...

  4. mongodb版本管理

    使用gradle. 查找最新版本http://mvnrepository.org/ compile "org.mongeez:mongeez:0.9.6" 配置spring < ...

  5. 夺命雷公狗—angularjs—19—angular-route

    ngRoute包括的内容 ng的路由机制是靠ngRoute提供的,通过hash和history两种方式实现了路由,可以检测浏览器是否支持history来灵活调用相应的方式.ng的路由(ngRoute) ...

  6. 7. 星际争霸之php设计模式--中介者模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  7. 试用版SQL Server 2008 R2 提示评估期已过

    解决SQL Server 2008提示评估期已过第一步:进入SQL2008配置工具中的安装中心第二步:再进入维护界面,选择版本升级第三步:进入产品密钥,输入密钥第四步:一直点下一步,直到升级完毕.SQ ...

  8. 为 Macbook 安装 enca 命令

    enca 是个查看.转换编码的开源软件, 地址: http://dl.cihar.com/enca/ 安装的步骤比安装 wget 简单多了: 1.用 wget 获取最新的enca 的 tar.gz 的 ...

  9. eclipse折叠快捷键

    之前按代码折叠快捷键的时候发现时而灵时而不灵,今天突然发现了问题所在: 按ctrl+/(小键盘)使代码左边出现折叠标志 然后再按ctrl+shift+/(折叠)   , ctrl+shift+*(展开 ...

  10. 2016年最好的15个Web设计和开发工具

    1.ai2html ai2html是适用于Adobe Illustrator的开源脚本,可以转换Illustrator文件为html和css. 官方网站:http://ai2html.org/ 2.A ...