String是一个预定义类型,并且java没有提供可以修改这个对象的api,在原有的String类型上进行修改,java会在内存中开辟一个新的地址。
在Java中,我们通常有两种方式创建字符串对象,一种是通过字符串字面量方式创建,另外一种就是通过 new 方式去创建,如果使用字符串字面量的方式创建,JVMj会在字符串池中检查字符串内容是否已经存在,如果存在就会直接返回对应的引用。
String s1 = "abc";
String s2 = s1;
System.out.println(s1 ==s2);
//结果是true
String s4 = new String("abc");
String s3 = "abc";
System.out.println(s3 == s4);
//结果是false
String s13 = "abc";
String s14 = new String("abc").intern();
System.out.println(s13 == s14);
//结果是true,这个是特例,加入了intern()方法结果不同
说到底不可变还是为线程安全,和防止被篡改。
常用的api String s = "abcbc";
String ss = "abc";
System.out.println(s.charAt(0)); // 返回字符串下表为x的字符
System.out.println(s.equals(ss));// equals来判断两个字符串是否是相等的
System.out.println(s.equalsIgnoreCase(ss));//用来比较两个字符串是否是相等的,忽略大小写
System.out.println(s.indexOf(2));//用来查看这个字符串在变量字符串中的位置,如果没有就返回-1
System.out.println(s.replace("bc","cd"));//用第二个参数代替第一个参数,有几个替换几个
System.out.println(s.substring(0,1));//返回一个子串
System.out.println(s.toUpperCase());//大写
System.out.println(s.toLowerCase());//小写
空串和Null
空串和Null不是一个东西。空串是"",它的本质还是一个字符串,还是只想内存中的一个地址的。
写了代码在这儿呢!
https://github.com/70pice/restart_study_java.git



