----------- android培训、java培训、期待与您交流! ------------
==和equals的区别
在学习的过程中发现有两个判断相等的方法就是“==”和equals,但是就是不明白为什么会有两种方法来判断,它们相等,我想它们肯定会有区别,经过自己的实验和查资料现在将一些心得和小例子分享给大家。
当使用==来判断两个变量是否相等时,如果两个变量是基本的数据类型,并且是数值类型时,则只要两个变量的值相等就会输出true但是对于引用类型的变量,他们必须要指向同一个对象时,使用==才会判断其相等输出true,但是需要注意的是,==不可用于比较类型上没有父子关系的两个对象。
下面是一个测试程序:
public class EqualTest
{
public static void main(String[] args)
{
int it = 65;
float fl = 65.0f;
//将输出true
System.out.println("65和65.0f是否相等?" + (it == fl));
char ch = 'A';
//将输出true
System.out.println("65和'A'是否相等?" + (it == ch));
String str1 = new String("hello");
String str2 = new String("hello");
//将输出false
System.out.println("str1和str2是否相等?"
+ (str1 == str2));
//将输出true
System.out.println("str1是否equals str2?"
+ (str1.equals(str2)));
//由于java.lang.String与EqualTest类没有继承关系,
//所以下面语句导致编译错误
System.out.println("hello" == new EqualTest());
}
}
在此需要知道常量池的概念,常量池是专门用于管理在编译期间被确定并被保存在已编译的class文件中的一些数据,它包括了关于类的方法接口中的常量,还包括字符串常量。
下面是另一个测试程序:
public class StringCompareTest
{
public static void main(String[] args)
{
String s1="长大了";
String s2="长大";
String s3="了";
String s4=new String("长大了");
System.out.println(s1==(s2+s3));//输出true;
System.out.println(s1==s4);//输出false;
}
}
----------- android培训、java培训、期待与您交流! ------------