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类库说明。我们在学习一种语言时肯定要用到语言开发者提

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值