【Java】Java基础知识3. tip21~30

本文详细解释了Java中equal和==的区别,并通过具体代码实例展示了它们的使用场景。包括对象引用和基本数据类型比较的不同结果,以及如何正确理解和应用这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Java中equal和==的区别是什么?
public class Test1{
    public static void main(String args[]){
            String a="1234";
            String b="1234";
            String c = new String("1234");
            System.out.println(a==b);
            System.out.println(a==c);
            System.out.println(a.equals(c));
    }
}

  • true false true
  • true true false
  • true false false
  • true true true

答案:A

equal:是用来比较两个对象内部的内容是否相等的。
==:是用来判断两个对象的地址是否相同,即是否是指向同一个对象。
new一个就是新地址

 

以下程序段的输出结果为:
public class EqualsMethod
{
    public static void main(String[] args)
    {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.print(n1 == n2);
        System.out.print(",");
        System.out.println(n1 != n2);
    }
}

  • false,false
  • false,true
  • true,false
  • true,true

答案:B
因为两次new() 分出的内存也不同

2.在jdk1.5的环境下,有如下4条语句:

Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59)。
以下输出结果为false的是:
  • System.out.println(i01== i02);
  • System.out.println(i01== i03);
  • System.out.println(i03== i04);
  • System.out.println(i02== i04);
    答案:C
    JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,除非用new Integer()显式的创建对象,否则都是同一个对象
    所有只有i04是一个新对象,其他都是同一个对象。所有A,B选项为true
    C选项i03和i04是两个不同的对象,返回false
    D选项i02是基本数据类型,比较的时候比较的是数值,返回true 。有基本数据类型的比较的都是值。
     

    3.根据下面的程序代码,哪些选项的值返回true?

    public class Square {  
        long width;  
        public Square(long l) {   
            width = l;  
        }  
        public static void main(String arg[]) {   
            Square a, b, c;   
            a = new Square(42L);   
            b = new Square(42L);   
            c = b;   
            long s = 42L;  
        } 
    }

    • a == b
    • s == a
    • b == c
    • a.equals(s)
      答案:C
       a = new Square(42L);   
       b = new Square(42L);   
      这里new了两个对象,所以a,b不是同一个引用a!=b
      s的类型跟a,b不同类型,所以s!=a,s!=b
       c = b; 
      这里b,c是同一个对象的引用,所以b==c是true

       

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

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

      抵扣说明:

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

      余额充值