1String 不可变
String a ="abc";
a=a+"d"; 常量池存储在两个字符
system.out.println(a)为abcd
StringBuilder builder = new StringBuilder();
builder.append("a").append("b");
//1ab
2 substring 的分割
//substring split trim
String str ="abcdef";
String s=str.substring(0,3);//[)
System.out.println(s);
String str ="abcdef;;";
String[] split = str.split("d");
System.out.println(split.length); //输出为1 ,当第一个分号前或后有空格时为2,但第二时为3;反复依次推理;
for (String string : split) {
System.out.println(string);
通过;完成分割是以;为界限来分割; //substring split trim
String str ="abcdef;;";
System.out.println(str.trim());
分割是是在字符串前后无效,在字符串的中间为可以表示出来
3String类型数组的比较
String a ="a";//指向字符串a
String b ="b";
String c ="ab";//指向字符串ab
String d ="a"+b;//产生的数据在常量池中
String e =new String("ab");
System.out.println(a+b==c);//false
System.out.println(c.equals(a+b));//true
string 重写了equals方法
System.out.println(c=="a"+"b"); //true
System.out.println(c==d);//false 只有在字面值时才会发生优化 说以错误
System.out.println(c==e);//false
System.out.println(c.equals(e));//true
System.out.println(e.intern()==c);//true intern 是指强制从常量池中取出
一般非为常量池 和 堆进行取值
一定要区分清楚取值的范围