String s=method(para);
String f="Y";
if(s==f)
{
System.out.println("="); (1)
}
byte[] a=s.getBytes();
for(byte b :a){
System.out.println(b); (2)
}
byte[] c=f.getBytes();
for(byte b :c){
System.out.println(b); (3)
}方法method明明返回的是“Y”,但就是不执行语句(1),而在执行(2)和(3)的时候输出的都是89,那说明变量s和f的值应该是一样的吧,请问各位这是为什么。
String f="Y";
if(s==f)
{
System.out.println("="); (1)
}
byte[] a=s.getBytes();
for(byte b :a){
System.out.println(b); (2)
}
byte[] c=f.getBytes();
for(byte b :c){
System.out.println(b); (3)
}方法method明明返回的是“Y”,但就是不执行语句(1),而在执行(2)和(3)的时候输出的都是89,那说明变量s和f的值应该是一样的吧,请问各位这是为什么。
比较值相等你可以用equals方法if(s.equals(f))
这样就ok了
一是用来比较基本数据类型,如integer, boolean, byte等。
二是用来比较对像实例的引用(reference to an object instance),对像(object)的一个实例在内存里的表现形式是内存地址,所以如果两个对像的引用指向的是同一个内存地址,那么那两个引用的就是同一个对象。所以,当用"=="比较两个object时,实际上比较object的地址,而不是值。
如:
String a = new String("abc");
String b = new String("abc");a == b 将反回false,因为两个是不同的对象实例。正确的方法是用object的equal()方法。java中所用类的根类是Object类,Object类中定义了equal()方法,用来比较两个对像的值是否相等。同时,还有hash()方法,可以用来定义如果判断两个object是想等的。
应该用equals
而不是像C语言那样用==
equals比较的是内容
==比较的是内存地址