前言:
本篇内容不多,单独介绍java中的字符串String,介绍了字符串的存储原理(辅助理解),以及其主要使用的方法,同时也介绍了StringBuilder可变字符序列
1. String 字符串
字符串一旦创建,就不可改变—引出常量池。
常量池概念:字符串的存储是在堆中的常量池中,当java创建一个字符串时,先到常量池寻找有没有相同的字符串,如果有,就会直接使用字符串的地址,如果没有,就在常量池中创造一个字符串。
对于常量池的理解:下面例子中的str1和str2
如果是出现了开辟新空间的情况:下面例子中的str3和str2
案例:
此处如果对使用==比较字符串有疑问,本篇最后补充了一道面试小题来解释这一点
//根据输出结果,解释原理
String str1 = "123";
String str2 = "123";
System.out.println(str2 == str1);//true 常量池
String str3 = new String("123");
System.out.println(str2 == str3);//false 新开辟空间后,使用常量池中字符串存储到新地址
String str4 = "1";
String str5 = str4 + "23";
System.out.println(str5 == str1);//false 只要使用了+连接符,就可以认为是new了一个新的字符串
String str6 = "1"+