常量池的作用:
在Java中只要是new的信息都会在堆上开辟一个新的空间,为了解决这个问题,JVM中才出现了字符串常量池的概念。但是只有直接用 ""修饰的字符,才会被加入到常量池中,当再次用 ""创建的时候,会首先从常量池中去获取。
字符串常量池存在于运行时常量池中。也就存在于方法区中。(此处关于字符串常量池存放位置,这个是根据jdk版本不同而不同的,此处举例在方法区中。)
String 的特性:
<1、String类代表字符串。 Java 程序中的所有字符串面值(如 “abc” )都作 为此类的实例现。
<2、String String是一个 final类,代表不可变的字符序列 。
❤️、字符串是常量 ,用双引号起来表示。 它们的值在创建之后不能更改 。
<4、String 对象的字符 内容是存储在一个字符数组 value[] 中的
String类字符串比较:
实例1:
public class Test{
public static void main(String[] args){
String str ="abc";
String str1 = new String("abc");
String str2 = "abc";
System.out.println(str == str1); //false
System.out.println(str == str2); //true
}
}
内存分析图:(注:本人也是初学者,如果发现错的地方,请指教!)
实例2:字符串拼接
public class Test{
public static void main(String[] args){
String str = "helloworld";
String str1 = "hello";
String str2 = "world";
String str3 = "hello" + "world";
String str4 = "hello" + str2;
String str5 = str1 + "world";
System.out.println(str1 == str2); //false
System.out.println(str == str3); //true
System.out.println(str == str4); //false
System.out.println(str == str5); //false
System.out.println