字符串的遍历:
package com.heima.cn;
public class TestString {
public static void main(String[] args) {
demo1();
demo2();
demo3();
demo4();
demo5();
demo6();
}
private static void demo6() {
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
private static void demo5() {
// 判断定义为string类型的s1和S2是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2); // false
System.out.println(s3.equals(s2)); // true
}
private static void demo4() {
// 判断定义为string类型的s1和S2是否相等
String s1 = "a" + "b" + "c"; // 常量优化机制,先把这三个串起来再一起赋值给s1
String s2 = "abc";
System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
}
private static void demo3() {
// 判断定义为string类型的s1和S2是否相等
String s1 = new String("abc");
String s2 = "abc";
System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true
}
private static void demo2() {
// 下面这句话在内存中创建了几个对象
String s1 = new String("abc");
// 两个对象:s1在堆内存中创建了一个对象,s1指向的是堆里面对象的地址,里面存放常量池中abc的地址
// 常量池中创建了abc这个对象
}
private static void demo1() {
// 判断定义为string类型的s1和S2是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
}
}
String s3 = s1 + "c";
先创建StringBuilder,调用append方法,生成abc,再在堆中生成新的string对象存储abc,调用toString方法,返回abc赋值