DotNet中“==”与equals()区别:
1."=="只能用于比较基本类型。基本类型包括:byte,short,int,long,char,float,double。基本类型不是对象所以不存在用equals比较。
2.对于引用类型(对象)的比较,“==”比较的是两个引用是不是指向同一个内存地址,而equals比较的是两个引用的字面值是不是相同。
字面值:比如:String s="abc"; abc就是字面值。
基本类型的包装类型是对象类型,所以除非两个相同字面值的引用指向同一内存地址,值才会相等,比如:
int a=new int(3);
int b=a;
这样用等号或equals比较都会得出true,记住一点,凡是两个引用都用了new去初始化,那==比较的结果都只会是false,互相之间有了赋值,比较结果就为true.
String a="abc";
String b="abc";
a==b和a.equals(b);结果都会为true,因为没有用new去新建对象,其实a和b都指向的是同一个String对象"abc",改成:
String a=new String("abc");
String b=new String"abc");
后==的结果就是false了