String字符串类型的使用详解入门。
- String 类代表字符串类型,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。
- String 类在 java.lang 包下,所以使用的 时候不需要导包.
String类的特点
String类定义的字符串也叫不可变字符串。
- 字符串不可变,它们的值在创建后不能被更改,我们发现改变的字符串实际上是指向了一个新的字符串对象(之前的字符串会被自动的回收)
- 正是因为 字符串对象 的值是不可变的,所以它们可以被共享
- 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[])
创建字符串对象的其他方法说明
-
public String() 创建一个空白字符串对象,不含有任何内容
-
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
可以吧字符数组的类容转变成字符串 char[] chs = {'a','b','我','中','国'}; String rs = new String(chs); System.out.println(rs);//ab我中国
-
public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
byte[] bytes = {97 , 98 , 99 , 65 , 66 , 67}; String rs1 = new String(bytes); System.out.println(rs1);//abcABC
-
String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc .经典写法!
注意:
-
直接定义的"字符串内容"放在字符串常量池。
-
new出来的字符串对象放在堆内存中。
34 String name1 = "赵丽颖"; // 这里有创建对象的,对象放在常量池! 35 String name2 = "赵丽颖"; // 这里没有创建对象,共享了34行的字符串常量。 所以这里只创建了一个字符串对象 String name3 = new String("赵丽颖"); // 这里创建的字符串对象会放到堆内存中一份!常量池中也有一份! String name4 = "赵丽颖" ; // 对象在常量池中!所以没有重新创建对象! 所以这里也只创建了一个字符串对象
public class StringDemo {
public static void main(String[] args) {
// 1.String类型定义一个字符串对象变量:name
String name = "cx";
name += "学生" ; // name = name + "老师"
System.out.println(name); // cx学生
String name1 = "赵丽颖"; // 这里有创建对象的,对象放在常量池!
String name2 = "赵丽颖"; // 这里没有,共享了34行的字符串常量。
System.out.println(name1 == name2); // name1和name2指向的是同一个地址!!
// 1.创建字符串对象的其他方式:调用有参数构造器。
String name3 = new String("赵丽颖"); // 这里创建的字符串对象会放到堆内存中一份!!
String name4 = "赵丽颖" ; // 对象在常量池中!建议这样定义!
System.out.println(name3);
System.out.println(name4);
// 2. public String(char[] chs) 根据字符数组的内容,来创建字符串对象(了解)
char[] chs = {'a','b','我','中','国'};
String rs = new String(chs);
System.out.println(rs);
// 3.public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
byte[] bytes = {97 , 98 , 99 , 65 , 66 , 67};
String rs1 = new String(bytes);
System.out.println(rs1);
}
}