对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. 前端构建工具gulp入门

    本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步 ...

  2. java 控制器向页面传值方式

    1.单个字符串 @RequestMapping(value = "list", method = RequestMethod.GET) public ModelAndView li ...

  3. Hibernate开始上手总结

    1,导入hibernate 的jar包,c3p0jar包 2,创建和表关联的实体类,创建关联实体类的配置文件 package com.entity; public class News { priva ...

  4. [php]使用会话session

    <?php /* cookie - 在客户端上存储少了信息(cookie) session(会话) - 解决cookie大小限制/数量/其他 setcookie() - 设置cookie 在客户 ...

  5. 我是如何对网站CSS进行架构的

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=944 一.写在前面的 ...

  6. iOS 学习笔记 十三 (2015.04.15)采用第三方库,实现ios录音转为amr

    1.第三方开源库地址 https://github.com/guange2015/ios-amr 2.参考博客地址 http://blog.csdn.net/windsoul85/article/de ...

  7. Linux异步IO【转】

    转自:http://blog.chinaunix.net/uid-24567872-id-87676.html Linux® 中最常用的输入/输出(I/O)模型是同步 I/O.在这个模型中,当请求发出 ...

  8. Hadoop Balance

    一.hadoop balance工具的用法: 启动balance: bin/start-balancer.sh -threshold 5 停止balance: bin/stop-balancer.sh ...

  9. ASP.NET MVC3 Dynamically added form fields model binding

    Adding  new Item to a list of items, inline is a very nice feature you can provide to your user. Thi ...

  10. jQuery添加删除元素

    $(document).ready(function () { $('#radioExtranet').on('click', function () { showProjectInformation ...