1. 关于equals()和==:
equals(),这个对于String简单来说就是比较两字符串的Unicode序列是否相当,如果相等返回true;而==是比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。
2、【例子1】说明==是用来判断两个字符串的地址是否相同;String s3="kv" + "ill";s3是字符串常量,如果是字符串常量无论“==”或equal()都能得出true,因为字符常量都是放在常量池中;用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String()创建的字符串不放入常量池中,它们有自己的地址空间。
【例子1】
String s0="kvill";
String s1=new String("kvill");
String s2="kv" + new String("ill");
String s3="kv" + "ill";
System.out.println( s0==s1 );
System.out.println( s0==s2 );
System.out.println( s1==s2 );
System.out.println( s0==s3 );
结果为:
false
false
false
true
equals(),这个对于String简单来说就是比较两字符串的Unicode序列是否相当,如果相等返回true;而==是比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。
2、【例子1】说明==是用来判断两个字符串的地址是否相同;String s3="kv" + "ill";s3是字符串常量,如果是字符串常量无论“==”或equal()都能得出true,因为字符常量都是放在常量池中;用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String()创建的字符串不放入常量池中,它们有自己的地址空间。
【例子1】
String s0="kvill";
String s1=new String("kvill");
String s2="kv" + new String("ill");
String s3="kv" + "ill";
System.out.println( s0==s1 );
System.out.println( s0==s2 );
System.out.println( s1==s2 );
System.out.println( s0==s3 );
结果为:
false
false
false
true