`

09 12 10 JavaSE学习笔记

阅读更多

---09 12 10---

对象的比较:我们已知道Java定义了8种基本类型,基本类型的比较用"=="

那我们用什么来比较对象呢?

在Java中用了一个"特殊"的方法(equals)来比较对象,那么"=="能比较对象

吗? 答案是肯定的,但两者有什么区别呢?我们一起来看看


class Compare1
{
public static void main(String args[])
{
String str1=new String("hello");
String str2=new String("hello");
String str3=str1;

if(str1==str2)
{
System.out.println("str1==str2");
}
else
{
System.out.println("str1!=str2");
}

if(str1==str3)
{
System.out.println("str1==str3");
}
else
{
System.out.println("str1!=str3");
}
}
}

我们先来猜一下运行结果:是不是【str1!=str2】
【str1==str3】

class Compare2
{
public static void main(String args[])
{
String str1=new String("hello");
String str2=new String("hello");
String str3=str2;

if(str1.equals(str2))
{
System.out.println("str1 equal str2");
}
else
{
System.out.println("str1 not equal

str2");
}

if(str1.equals(str3))
{
System.out.println("str1 equal str3");
}
else
{
System.out.println("str1 not equal

str3");
}
}
}


OK 让我们来分析一下这两个实例代码:
在Compare1这个类中我们创建了三对象str1 str2 str3分别是其

句柄即str1 str2 str3分别代表了三个对象在内存中的地址(对象附着在句

柄上方便Java虚拟机在内存中找到它们).str1 str2 代表了两个个不同的内

存位置,两个对象在内存的不同位置,我们用"="把str1的内存地址赋值给了

str3。我们用"=="来比较其内存地址是否相同,很显然str1和str2是不相等

的,str3和str1是相同的。(最好去联想一下对象在堆栈中的分配)

在Compare2这个类中我们用到了equals方法,equals方法是String

类的一个方法,是用来判断两个引用变量(句柄)所指向的对象内容是否相等.
(我们来学习Java语言时肯定要用到jdk提供给我们的东东,有的朋友肯能会

问:你怎么知道用Java中提供的这种方法的? 我是去查的JDK文档,这是Sun提

供给我们的Java类库说明。我们在学习一种语言时肯定要用到语言开发者提

供给我们的"工具"或问题解决的方案,用语言提供的东东来实现我们想要做的

事,这才是语言出现的目的,否则就是失败的语言)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics