本章目标
掌握String类的两种实例化方式
掌握String的两种比较操作
深入分析String类两种实例化方式的区别
掌握String的使用特点

 

实例化String对象
A、直接赋值

public class StringDemo01 {
	public static void main(String[] args) {
		String name = "chaoyi";//实例化 String 对象
		System.out.println("姓名:"+name);//输出字符串的内容
	}
/*结果:
 * 姓名:chaoyi
 * */
}

 
B、通过关键字new

public class StringDemo02 {
	public static void main(String[] args) {
		String name = new String("chaoyi");//实例化 String 对象
		System.out.println("姓名:"+name);//输出字符串的内容
	}
/*结果:
 * 姓名:chaoyi
 * */
}

 

String的比较方式
String的比较有两种方式:
——==:地址值比较
——equals()方法:内容比较

 

使用“==”比较

public class StringDemo04 {
	public static void main(String[] args) {
		String str1 = "Hello";//直接赋值
		String str2 = new String("Hello");//通过 new  赋值
		String str3 = str2;//传递引用
		System.out.println("str1 == str2 -->"+(str1 == str2));//-->false
		System.out.println("str1 == str3 -->"+(str1 == str3));//-->false
		System.out.println("str2 == str3 -->"+(str2 == str3));//-->true
	}
/*结果:
 * str1 == str2 -->false
 * str1 == str3 -->false
 * str2 == str3 -->true
 * */
}

 

String类_实例化


 

 使用equals()方法比较

public class StringDemo05 {
	public static void main(String[] args) {
		String str1 = "Hello";//直接赋值
		String str2 = new String("Hello");//通过 new  赋值
		String str3 = str2;//传递引用
		System.out.println("str1.equals(str2) -->"+(str1.equals(str2)));//-->true
		System.out.println("str1.equals(str3) -->"+(str1.equals(str3)));//-->true
		System.out.println("str2.equals(str3) -->"+(str2.equals(str3)));//-->true
	}
/*结果:
 * str1.equals(str2) -->true
 * str1.equals(str3) -->true
 * str2.equals(str3) -->true
 * */
}

 

一个字符串就是String的匿名对象

public class StringDemo06 {
	public static void main(String[] args) {
		System.out.println("\"Hello\".equals(\"Hello\") --> "+("Hello".equals("Hello")));
	}
/*结果:
 * "Hello".equals("Hello") --> true
 * */
}

 

String类两种实例化方式的区别 —— 直接赋值 

public class StringDemo07 {
	public static void main(String[] args) {
		String str1 = "Hello";//声明 3 个字符串变量,每个变量的内容都是一样的
		String str2 = "Hello";//声明 3 个字符串变量,每个变量的内容都是一样的
		String str3 = "Hello";//声明 3 个字符串变量,每个变量的内容都是一样的
		System.out.println("str1 == str2 -->"+(str1 == str2));//-->true
		System.out.println("str1 == str3 -->"+(str1 == str3));//-->true
		System.out.println("str2 == str3 -->"+(str2 == str3));//-->true
	}
/*结果:
 * str1 == str2 -->true
 * str1 == str3 -->true
 * str2 == str3 -->true
 * */
}

 

String类_字符串_02


 

 String类两种实例化方式的区别 —— 通过关键字new赋值

public class StringDemo08 {
	public static void main(String[] args) {
		String str = new String("Hello");//通过关键字 new 实例化
	}
/*结果:
 * */
}

String类_字符串_03


  

 

字符串的内容一旦声明则不可改变

public class StringDemo09 {
	public static void main(String[] args) {
		String str = "Hello";//声明字符串
		str = str + " Word!";//修改字符串
		System.out.println("str = "+str);
	}
/*结果:
 * str = Hello Word!
 * */
}

 

String类_System_04


 

不正确的使用

public class StringDemo10 {
	public static void main(String[] args) {
		String str1 = "chaoyi";//声明字符串对象
		for(int i = 0; i<10; i++){//循环修改内容
			str1 +=i;//字符串引用不断改变
		}
		System.out.println(str1);
	}
/*结果:
 * chaoyi0123456789
 * */
}