每日刷题总结

本文深入探讨Java语言的关键字、Object类的功能与用法、Integer对象的比较机制以及抽象类与接口的区别与联系。通过实例解析,帮助读者理解Java中常见概念的内部工作原理。

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

1.下面哪个不是Java语言的关键字(B)

A.default
B.number
C.abstract
D.package

解析:
JAVA关键字:abstract,boolean,break,back,continue,case,catch,char,class,do,double,default,else,extends,final,finally,float,
for,long,if,implements,import,new,instanceof,int,interface,package,private,public,protected,return,short,static,super,switch,
sychronized,this,while,void,throw,throws,try,volatile
保留字:const,go

2.以下关于Object类的说法正确的是(A)

A.Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。
B.Java中的接口(interface)也继承了Object类。
C.利用“==”比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。
D.如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。

解析:
Object 是基类 Java中的所有的类都直接或间接的继承;所以A对
从一个class派生的必然是另一个class。Object是一个class,如果interface继承自Object,
那么interface必然是一个class,所以B错。
利用equals()方法进行比较时 会调用== 可以看equals()方法的源码,可以这样说, == 比equal更加强大,所以C错
toString()方法是Object类中 即使不重写也能使用 所以D错。

3.

public class Test03 {
    public static void main(String[] args) {       
        Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;          
        System. out.println( f1 == f2); //true
        System. out.println( f3 == f4); //false
    }
}

一个Integer赋予一个int类型的时候会调用Integer的静态方法valueOf。
Integer f1 = Integer.valueOf(100);
Integer f2 = Integer.valueOf(100);
Integer f3 = Integer.valueOf(150);
Integer f4 = Integer.valueOf(150);
思考:那么Integer.valueOf()返回的Integer是不是是重新new Integer(num);来创建的呢?如果是这样的话,那么== 比较返回都是false,因为他们引用的堆地址不一样。
具体来看看Integer.valueOf的源码:

public static Integer valueOf(int i) {
         
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
}

egerCache中cache数组初始化如下,存入了-128 ~ 127的值
cache = new Integer[(high - low) + 1];
int j = low;
for( int k = 0; k < cache.length ; k ++)
cache[k] =
cache[k] = new Integer(j ++);
从上面我们可以知道给Interger 赋予的int数值在-128 ~ 127的时候,直接从cache中获取,这些cache引用对Integer对象地址是不变的,
但是不在这个范围内的数字,则new Integer(i) 这个地址是新的地址,不可能一样的.

4.在Jdk1.7中,下述说法中抽象类与接口的区别与联系正确的有哪些?(ABCD)

A.抽象类中可以有普通成员变量,接口中没有普通成员变量。
B.抽象类和接口中都可以包含静态成员常量。
C.一个类可以实现多个接口,但只能继承一个抽象类。
D.抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。

解析:

  1. 一个子类只能继承一个抽象类,但能实现多个接口
  2. 抽象类可以有构造方法,接口没有构造方法
  3. 抽象类可以有普通成员变量,接口没有普通成员变量
  4. 抽象类和接口都可有静态成员变量,抽象类中静态成员变量访问类型任意,接口只能public static final(默认)
  5. 抽象类可以没有抽象方法,抽象类可以有普通方法,接口中都是抽象方法
  6. 抽象类可以有静态方法,接口不能有静态方法
  7. 抽象类中的方法可以是public、protected;接口方法只有public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值