Java字符串
String的特点
程序当中所有用双引号括起来的东西都说字符串不管有没有生成String类
1. 字符串的内容永不可变(重点)
2.字符串永不可变,所以可以共享使用
3.字符串效果相当于char[]数组,但是底层原理是byte[]字节数组
创建字符串
创建字符串的3+1种方法
构造方法:
1.创建一个空白串
2.用字符数组来创建字符串
3.byte数组来创建字符串
直接创建:
直接使用双引号创建
代码示例
public class Demo01 {
public static void main(String[] args) {
String str1 = new String();//空构造方法
System.out.println("第一个字符串:" + str1);
char charArray[] = {'A', 'B', 'C', 'D'};
String str2 = new String(charArray);//使用字符数组创建
System.out.println("第二个字符串:" + str2);
byte byteArray[] = {97, 98, 99, 100};
String str3 = new String(byteArray);//使用字节数组创建
System.out.println("第三个字符串:" + str3);
//直接创建(创建的也是String对象)
String str4 = "hello,world!!!";
System.out.println("第4个字符串:" + str4);
}
}
字符串常量池
当程序中直接写上双引号字符串,这个字符串就在字符串常量池中
1.对应基本数据类型==比较的是值的大小
2.对于引用数据类型==比较的是地址值
字符串常量池的内存示意图
1.如果用双引号直接创建字符串对象就会放入池中,并且字符串底层使用byte数组是实现,常量池中的字符串对象是一个指向byte数组的引用.
2.当再次使用双引号直接创建相同的字符串对象会直接把原本已经有的字符串对象赋值给新生成的对象
3.如果使用了new关键字就不会创建在字符串常量池当中了,会在堆当中开辟空间.如果使用字符数组创建会把字符数组转化为byte数组
代码示例
public class Demo02 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] charArry = {'a', 'b', 'c'};
String str3 = new String(charArry);
System.out.println(str1 == str2);
System.out.println(str1 == str3);
System.out.println(str2 == str3);
}
}
标签:Java,String,创建,System,println,数组,字符串
From: https://www.cnblogs.com/harper886/p/17327184.html