String字符串对象的创建及管理
来源:互联网 发布:淘宝上架时间周期 编辑:程序博客网 时间:2024/05/30 05:42
在创建字符串,我们可以用到new String("*****")或者直接=“******”两种形式,两种形式有着很大的区别。
1.单独使用""引号创建的字符串都是常量,编译期就已经确定存储到String Pool中;
2.使用new String("")创建的对象会存储到heap中,是运行期新创建的;
3.使用只包含常量的字符串连接符如"aa" + "aa"创建的也是常量,编译期就能确定,已经确定存储到String Pool中;
4.使用包含变量的字符串连接符如"aa" + s1创建的对象是运行期才创建的,存储在heap中;
5:只用""引号创建的字符串创建一个或者零个对象,比如String a="123",如果String pool不存在"123",则创建一个String对象"123"放到String pool中,如果存在,则a的引用直接指向它。
6:用new关键字至少创建一个对象,比如 String a=new String("123")首先会创建一个对象存储在heap中,如果String pool中不纯在"123"则创建一个String对象"123"放到String pool中,如果存在,则不创建。
7:String.intern()方法返回字符串对象的规范化表示形式,当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。
<span style="font-size:18px;"> String a="123";String b="123";String c=new String("123");String tem="12";String d=tem+"3";System.out.println(a==b);//trueSystem.out.println(a==c);//falseSystem.out.println(a==d);//falseSystem.out.println(a==d.intern());//trueSystem.out.println(c==d);//false</span>
- String字符串对象的创建及管理
- java对String字符串对象的创建及管理
- 详解Java String字符串对象的创建及管理(1)
- 详解Java String字符串对象的创建及管理(2)
- java对String字符串对象的创建以及管理
- String的创建及管理
- 关于String字符串对象的创建与管理(String pool测试)
- 深入研究java对String字符串对象的创建以及管理----讲的相当透彻
- Java对String字符串对象的创建,管理和“+”运算符的实现
- Java对String字符串对象的创建,管理和“+”运算符的实现
- String类型字符串对象的创建
- 深入研究java对String字符串对象的创建以及管理
- (原创)深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理【转帖】
- 深入研究java对String字符串对象的创建以及管理
- 深入研究java对String字符串对象的创建以及管理
- [1218]THE DRUNK JAILER (水题)POJ
- Everything原理(部分)
- c++ 多线程 临界区
- 解决easyui和bootstrap兼容问题
- 【Cocos2d-x 手游研发小技巧】图片资源加密,Lua文件加密
- String字符串对象的创建及管理
- CF 250 C. The Child and Toy
- Jm18.6绘制量化步长变化时,码率和psnr的关系
- 什么是java序列化,如何实现java序列化?
- 傅里叶变换的完美总结【完整版】
- android 开发遇到的问题2014-09-25
- bzoj1005: [HNOI2008]明明的烦恼 [prufer序列]
- 希尔排序
- 250 B. The Child and Set