1 字符串的构造方法和直接创建
/*
java.lang.String类代表字符串
API当中说:Java程序中的所有字符串字面值(如:"abc")都作为此类的实例实现。
其实就是说:程序当中所有的双引号字符串,都是String类的对象。(就算没有new,也照样是。)
字符串特点:
1. 字符串的内容永不可变
2. 正因为字符串不可变,所以字符串是可以共享使用的。
3. 字符串效果上相当于char[]字符数组,但是底层原理是byte[]字节数组。
创建字符串的常见3+1种方式
3种构造方法:
public String():创建一个空白字符串,不含有任何内容。
public String(char[] array):根据字符数组的内容,来创建对应字符串。
public String(byte[] array):根据字节数组的内容,来创建对应字符串。
1种直接创建:
String str = "hello"
*/
public class Demo01String {
public static void main(String[] args) {
//使用空参构造
String str1 = new String();
System.out.println(str1);//
//使用字符数组创建字符串
char[] charArray = {'A','B','C'};
String str2 = new String(charArray);
System.out.println(str2);//ABC
//根据字节数组创建字符串
byte[] byteArray = {97, 98, 99};
String str3 = new String(byteArray);
System.out.println(str3);//abc
//直接创建
String str4 = "Hello";
System.out.println(str4);//Hello
//注意:str1 str2 str3 str4都是字符串对象(就算str4没有new,也算字符串对象)
}
}
2 字符串的常量池
/*
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量池中。
对于基本类型来说, ==是进行数值比较。
对于引用类型来说, ==是进行【地址值】的比较
*/
public class Demo02StringPoor {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] charArray = {'a','b','c'};
String str3 = new String(charArray);
System.out.println(str1 == str2);//true
System.out.println(str1 == str3);//false
System.out.println(str2 == str3);//false
}
}
在堆内存中有这样一个空间,叫做字符串常量池,双引号直接写上的字符串(str1,str2)在常量池中,字符串常量池中的字符串对象保存的是byte字节数组的地址值。
原文地址:https://www.cnblogs.com/deer-cen/p/12227945.html
时间: 2024-10-29 12:56:13