Java每日一题20201011

2020-10-30 11:46:44 浏览数 (1)

大家好,我是向同学,从今天继续每日一题,旨在为提高大家的基础知识。话说干了这么多年的开发,只知道会用,怎么用,用什么,隐约也知道了为什么用,但为啥JAVA总像一个犹抱琵琶半遮面的女子,总让人看不透,看不腻?应该就是基础不扎实了

每日一题20201010答案:

(点击阅读原文可以查看每日一题20201010)

每日一题20201010

主程序输出结果是true

分析结果,ArrayList、Vector两者都实现了List接口、继承AbstractList抽象类,其equals方法是在AbstractList类中定义的,源代码如下:

代码语言:javascript复制
public boolean equals(Object o) {    
   if (o == this)        
      return true;    
   // 判断是否是List列表,只要实现了List接口就是List列表
   if (!(o instanceof List))        
      return false;    
   // 遍历list所有元素
   ListIterator<E> e1 = listIterator();
   ListIterator e2 = ((List) o).listIterator();    
   while (e1.hasNext() && e2.hasNext()) {
       E o1 = e1.next();
       Object o2 = e2.next();        
       // 有不相等的就退出
       if (!(o1==null ? o2==null : o1.equals(o2)))            
           return false;
    }    
    // 长度是否相等
    return !(e1.hasNext() || e2.hasNext());
}

从源码可以看出,equals方法并不关心List的具体实现类,只要是实现了List接口,并且所有元素相等、长度也相等的话就表明两个List是相等的,所以例子中才会返回true。

今日题目

今日问题:
代码语言:javascript复制
public class Ques1018 {
    public static void main(String[] args){
        Obj obj01 = new Obj("18");
        Obj obj02 = new Obj("19");
        obj01.printAge(obj02);
    }
}

class Obj{    
    private String age; 

    public Obj(String age){
        this.age = age;
    }

    public void printAge(Obj obj){
        String age = obj.age; 
        System.out.println("年龄是:"   age);
    }
}

请问主程序输出结果是什么?(问题分析将在每日一题20201010公布)大家也可以在留言区留言!!!

地址:http://cn.hk.uy/xqz

作者:小五

作者:BossXiang,可爱且懂得生活的研究生一枚(码农一枚)。

"一起学习、成长、温情的热爱生活。"

私人微信|

CSDN|知乎|github|掘金:五角钱的程序员

关注福利

关注公众号,后台回复【电子书】

几百本常用技术类电子书籍

五角钱的程序员

希望这篇文章可以帮到你~

欢迎大家点个在看,分享至朋友圈

你我都成为光发热之人,在看在看在看~(疯狂暗示!)

0 人点赞