String类
1简介
1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。
2、在java中随便使用 双引号括起来 的都是String对象。
3、java中规定,双引号括起来的字符串,是 不可变 的,也就是说"abc"自出生到最终死亡,不可变,不能变成"abcd",也不能变成"ab"
4、在JDK当中双引号括起来的字符串,例如:“abc” "def"都是直接存储在“方法区”的“字符串常量池”当中的。
5、为什么把字符串存储在一个“字符串常量池”当中呢?
因为字符串在实际的开发中使用太频繁。为了执行效率,所以把字符串放到了方法区的字符串常量池当中。
字符串常量池:在JVM中,为了减少字符串对象的重复创建,维护了一块特殊的内存空间,这块内存空间就被称为字符串常量池。
2.构造方法
// 这两行代码表示底层创建了3个字符串对象,都在字符串常量池当中。
String s1 = "abc"
String s2 = "abc"
// 分析:这是使用new的方式创建的字符串对象。这个代码中的"xy"是从哪里来的?
// 凡是双引号括起来的都在字符串常量池中有一份。
// new对象的时候一定在堆内存当中开辟空间。
String s3 = new String("xy");
注:
字符串对象之间的比较不能使用“== ”进行比较,"=="是比较的地址。应该调用String类的equals方法,比较字符串的内容。
三、方法
相关问题:
1.为什么 System.out.println(引用) 会自动调用toString()方法?
因为println()会调用String.valueOf()方法而String.valueOf()会调用toString()方法
2.String byte数组 理解
byte[] b = new byte[1000000000];//有1000000000都是byte类型的