赞
踩
当我们使用“==”进行比较时;引用数据类型比较的是地址值。new出来地对象会开辟在堆中;所以他们地址不相等。
- public class uesfanyue {public static void main(String[] args){
- String s=new String("123");
- String ss=new String("123");
- boolean b=s==ss;
- System.out.println(b);//false
- }
-
-
- }
当我们使用equals比较时就可以比较字符串里面的内容
- public class uesfanyue {public static void main(String[] args){
- String s=new String("123");
- String ss=new String("123");
- boolean b=s==ss;
- System.out.println(b);//false
- b=s.equals(ss);
- System.out.println(b);//true;
- }
-
-
- }
当使用string s=xxx;时,此时的值会保存在串池中;当另一个string ss调用时会直接去串池中找;
故此时它们的值是一样的。
- String z="123";
- String zz="123";
- boolean c=z==zz;//true;
- System.out.println(c);
当拼接字符串时有变量时;会新建一个对象在串池中;
当没有变量时;直接在串池中寻找。
- String s="1234";
- String d="123";
- String c=d+"4";
- String v="123"+"4";
- boolean a= s==c;//false;
- boolean n= v==s;//true;
注:上述中串池为堆内存中的一部分,专门用来存放直接赋值的字符串;
最后月月建议大伙在使用string时直接赋值使用最好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。