String与字符串池
来源:互联网 发布:c语言从偶数2加到100 编辑:程序博客网 时间:2024/06/18 03:59
public class StringInternTest { public static void main(String[] args) { // 使用char 数组来初始化a,避免在a 被创建之前字符串池中已经存在了值 为"abcd"的对象 String a = new String(new char[] { 'a', 'b', 'c', 'd' }); String b = a.intern(); if (b == a) { System.out.println("b 被加入了字符串池中,没有新建对象"); } else { System.out.println("b 没被加入字符串池中,新建了对象"); } } }b 没被加入字符串池中,新建了对象
字符串池和String类的基本关系:
Java运行环境有一个字符串池,由String类维护。
1、执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
2、执行语句String str=new String("abc")时,不管字符串池中是否存在字符串"abc",直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
3、当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(用 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并返回此 String 对象的引用。
String a = new String(new char[] { 'a', 'b', 'c', 'd' }); 这个就是第二种情况了,此时字符串a不在字符串池中,String b = a.intern(); 因为a不在字符串池中,所以在执行a.intern()时,会把a添加在池中,然后返回a的引用,所以b的值就是a的引用,所以a不等于b。
它遵循以下规则:对于任意两个字符串 s
和 t
,当且仅当 s.equals(t)
为true
时,s.intern() == t.intern()
才为 true
。
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
System.out.println(a=="abcd");
---false
String a = new String(new char[] { 'a', 'b', 'c', 'd' });
String b = a.intern();
System.out.println(b=="abcd");
---true
- String与字符串池
- java字符串String与String
- java String 以及字符串直接量 与 字符串驻留池 ...
- string与utf8字符串转换
- STL概念与字符串string
- 字符串处理与string解析
- String与StringBuffer字符串反转
- c 字符串与C++string
- String与StringBuilder连接字符串
- 从字节码理解String与字符串常量池
- java String常量池与字符串拼接性能优化
- String字符串池
- 字符串String 池
- 关于String字符串池
- String、StringBuffer与StringBuilder与字符串反转
- String对象与java字符串池——到底创建了几个String对象
- java字符串池 引号创建与new String()创建字符串对象是不同的
- C#字符串处理(String与StringBuilder)
- lock_sga and pre_page_sga设置
- python 随机数生成
- Mysql 存储过程和函数区别
- Sandboxie 3.56 Final 特别版
- freemaker eclipse 插件下载
- String与字符串池
- linux 哥来了
- 简明Python教程 --- 9.数据结构
- vc6.0中 POP-up Menu不支持此接口的解决方法
- Windows 7开机出现BOOTMGR is compressed,Press Ctrl+Alt+Del to restart的解决方法(用一张带WinPE的Ghost光盘)
- 2011 Google 杯 上海邀请赛 Juice Extractor
- 简明Python教程 --- 10.一个小项目
- poj 2362Square(DFS)
- POJ1466 二分图最大独立集[有陷阱的一道题]