创建String的两种方式有什么区别?
2016-02-24 15:06
148 查看
在创建String对象时,通常来讲,有两种方式,一是new型:String s = new String("abc");另一种是双引号型:String s = "abc";那么这两种方式有什么区别呢?
答:这两种方法生成的字符串对象,在内存中的存取机制不同。
Java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。示例代码如下:
String a = "tom";
String b = "tom";
在上诉代码中,变量a和b使用的是缓冲区中的同一个存储对象。
在使用String构造方法定义对象时,Java环境会和创建其他类型的对象一样,每次调用时,都会去创建一个新的对象。示例代码如下:
String a = new String("tom");
String b = new String("tom");
在上述代码中,变量a 和b 使用的是两个不同的存储对象,只是对象中的内容相同。
运行结果如下:
结束语,String s = new String("abc")和String s = "abc"都可以定义String类型对象,但需要注意两者的区别。一般情况下,建议使用String s = "abc"方式,因为该方式采用的是字符串缓冲池机制,效率更高。
答:这两种方法生成的字符串对象,在内存中的存取机制不同。
Java为String类型提供了缓冲池机制,当使用双引号定义对象时,Java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用,如果不存在则创建一个新的字符串放在缓冲池中。示例代码如下:
String a = "tom";
String b = "tom";
在上诉代码中,变量a和b使用的是缓冲区中的同一个存储对象。
在使用String构造方法定义对象时,Java环境会和创建其他类型的对象一样,每次调用时,都会去创建一个新的对象。示例代码如下:
String a = new String("tom");
String b = new String("tom");
在上述代码中,变量a 和b 使用的是两个不同的存储对象,只是对象中的内容相同。
运行结果如下:
结束语,String s = new String("abc")和String s = "abc"都可以定义String类型对象,但需要注意两者的区别。一般情况下,建议使用String s = "abc"方式,因为该方式采用的是字符串缓冲池机制,效率更高。
相关文章推荐
- 虚拟机网络模式介绍与说明
- uvaoj-10925:throwing cards away
- Java 去掉字符串中的换行符回车符等
- 使用easyui实现双击列表中某个值直接对其进行修改
- ROW_NUMBER()函数的使用
- C# DateTime详解
- Xcode Svn配置
- jquery form表单获取内容以及绑定数据
- iOS核心动画之CoreAnimation
- Hadoop 伪分布式安装
- STM32F103RCT6控制LED
- angularJs driective指令小实例
- [A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection。
- spring-security配置和原理简介
- mysql SQL_MODE设置
- rtabmap编译问题总结
- 阮一峰博客十年2
- Linux系统日志
- c# virtual详解
- LeetCode: 9. Palindrome Number