2:String的基本介绍(干货)
String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。 大家观看源码会发现String类其实是通过char数组来保存字符串的.String对象一旦被创建就是固定不变的了,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象
String a="q1";
String b="q2";
System.out.println(a+b);
//把二者拼接起来输出结果为q1q2。操作String我们可以使用StringBuffer和StringBuilder;
StringBuilder sb = new StringBuilder();
sb.append("q1");
sb.append("q2");
System.out.println(sb.toString());
//输出结果同样为q1q2
String a="b";
String b="b";
System.out.println(a==b);
System.out.println(a.equals(b));
//输出结果为true true ==是比较二个对象是否一致 由于我们并没有New对象 a和b都是常量池中对象所以结果是true equals是比较两个值是否一样 所以结果为true
String a="b";
String b=new String("b");
System.out.println(a==b);
System.out.println(a.equals(b));
//输出结果为false true B是new出来的对象存放在堆中 两个值的指针是指向两个不同的对象 所以==结果为false 和equals依然是true
String a= "abc";
String b = "a";
String c = "bc";
String d = b + c;
System.out.println(a == d);
//输出 false,因为b+c实际上是使用StringBuilder.append来完成,会生成不同的对象 所以结果依然是false。
String str = new String("abc");//每new一次就会创建一个新的对象。每个对象的地址都不一样
String str = "abc"; //直接声明变量str 然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”(这里创建了str)
String str1="abc"; //这里的str1直接指向str的abc所以地址是一样的(str1并没有被创建!是直接指向之前创建的str )
String类中有多个方法能让我们对其进行操作
subString 截取指定的字符串
trim 去除String中的空格
length 获得String的长度
split 通过特点的格式把String 分割为字符串数组
。。。。。。