String 基础(一)
来源:互联网 发布:模糊图像修复软件 编辑:程序博客网 时间:2024/05/29 19:35
String 基础(一)
一:String引用类型(也有人称是一个对象),不是简单类型!默认值是null.
二:new String() 和new String("")是创建一个空字符串对象。不是null。
三:String str = "abc" 和 String str = new String("abc")的区别:
为了区别,我们引入一个概念——常量池
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的
一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。
(1):String str = "abc"
首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,
如果不存在就在字符串池中新建一个字符串"abc",然后赋给str。也就是说,
jvm会确保字符串池中仅有一个字符串拷贝。
例如:
String str1 = "abc";
String str2 = "abc";
String str3 = "a"+"b"+"c";
System.out.println(str1==str2);
System.out.println(str1==str3);
结果:true
true
因为例子中的str1 和str2 中的”kvill”都是字符串常量,它们在编译期就被确定了,所以str1==str2为true;
而”a”和”b”,"c"也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,
所以str3 也同样在编译期就被解析为一个字符串常量,所以str3 也是常量池中” abc”的一个引用。
(2): new String("abc")
创建的字符串不是常量,不能在编译期就确定,所以new String()创建的字符串不放入常量池中,它们有自己的地址空间
例:
String str1 = "abc";
String str2 = new String("abc");
String str3 = "a"+"b"+new String("c");
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str2==str3);
结果:
false
false
false
str2 因为无法在编译期确定,所以是运行时创建的新对象”abc”的引用,
str3 因为有后半部分new String(“c”)所以也无法在编译期确定,
所以也是一个新创建对象”abc”的应用;明白了这些也就知道为何得出此结果了。
四:最后总结一下
创建字符串对象不建议用new 的方式,new效率比较低,而且也占用空间。如果要用new String();建议用
StringBuffer!
- string类(一、string基础)
- String 基础(一)
- 一、String类的基础
- Java基础一(String )
- java基础---String学习笔记一
- 【Java基础一】String创建对象"" && null
- C#基础(一)字符串String
- JavaScript基础学习(一)--对象实例String的学习
- java基础(一)之StringBuffer,StringBuilder,String区别
- JAVA基础之InterView(一)--String+StringBuffer+StringBuilder的区别
- STL 源码分析之string(一)基础篇
- String总结(一)String
- JAVA字符串String、StringBuffer、StringBuilder、基本数据类型包装 ----java基础一
- 算法基础(一)---- 不使用Integer.parseInt将String转为Int
- 黑马程序员——java语言基础部分——String、StringBuffer StringBuild学习笔记一
- C#控制台基础 用指定字符连接一维string数组
- redis基础简介(一)- string(字符串)、list(列表)
- php 基础笔记 - string
- 使用JAD批量反编译class文件
- tomcat5.5安装
- apache和tomcat5.5整合
- jQuery学习笔记
- 人生若只如初见
- String 基础(一)
- Struts2 在IE 7中session丢失的解决方法
- webwork request 异常出错原因
- 程序员的10种级别
- 主要Linux 平台高可用集群软件(High Availability Cluster- HA)简介
- Sqlserver 2005 排名函数
- 关于ASP的(VBScript)类
- SqlDataAdapter对象使用札记
- js判断浏览器类型;去全角、半角空格;自动关闭当前窗口