一,String的简介:
- 查阅API中的String类的描述,发现String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
- 一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。
- 字符串的本质是一个字符的数组(String类一旦被创建,就不能被改变)。
1.1,String常量池
为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中,就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。
Note:String s =
"aaa"
;
这里,jvm创建一个变量引用s,在堆中创建一个对象aaa,将aaa放进常量池。s指向aaa。
然后就到了change方法里,常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量。
1.2,String s = "aaa";与String s = new String("aaa");的区别:
String s = "aaa"; 对象只是一个引用,内存中如果有"aaa"的话,s就指向它;如果没有,才创建它;
如果你以后还用到"aaa"这个字符串的话并且是这样用:
String ss = "aaa"; String sss = "aaa"; 这三个变量都共享"aaa"。
而String s = new String("aaa");是根据"aaa"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给aaa
1.1,String常用方法
1.public String(); //空参构造 初始化一个新创建的 String 对象,使其表示一个空字符序列
原文地址:https://www.cnblogs.com/joeyJss/p/10147492.html
时间: 2024-10-11 05:59:44