2023-3-25 java选择题每日一练

文章详细阐述了Java中类的继承关系下静态代码块、实例代码块和构造方法的执行顺序,以及栈的先进后出原则在变量入栈出栈时的应用。同时讨论了try-catch-finally语句块中返回值的处理和不同数值类型之间的安全转换与赋值规则。
摘要由CSDN通过智能技术生成
  1. 继承中类, 静态代码块, 实例代码块和构造方法的执行顺序

其原理如下:

  • 当没有子类继承的时候

顺序:静态代码块 → main → 构造代码块 → 构造方法

public class Test {
    static{
        System.out.println("父类静态代码块开始执行!");
    }
    {
        System.out.println("父类构造代码块开始执行!");
    }
    public Test(){
        System.out.println("父类构造方法开始执行!");
    }
    public static void main(String[] args) {
        System.out.println("父类开始运行main");
        new Test();
    }
}

运行结果:

父类静态代码块开始执行!

父类开始运行main

父类构造代码块开始执行!

父类构造方法开始执行!

  • 当存在继承的情况下:

执行顺序:

父类静态代码块 → 子类静态代码块 → main → 父类构造代码块 → 父类构造方法 → 子类构造代码块 → 子类构造方法

public class Test2 {
    static{
        System.out.println("父类静态代码块开始执行!");
    }
    {
        System.out.println("父类构造代码块开始执行!");
    }
    public Test2(){
        System.out.println("父类构造方法开始执行!");
    }
}
public class Test1 extends Test2{
    static{
        System.out.println("子类静态代码块开始执行!");
    }
    {
        System.out.println("子类构造代码块开始执行!");
    }
    public Test1(){
        System.out.println("子类构造方法开始执行!");
    }
    public static void main(String[] args) {
        System.out.println("子类开始运行main");
        new Test1();
    }
}

运行结果:

父类静态代码块开始执行!

子类静态代码块开始执行!

子类开始运行main

父类构造代码块开始执行!

父类构造方法开始执行!

子类构造代码块开始执行!

子类构造方法开始执行!

所以这题选D

2. 对栈的理解(先进后出)

A: 从6一直进到4 的时候, 4开始出栈一直出到5出栈然后3进栈, 此时1 还没有入栈, 而且他要入栈的话前面还有一个2, 所以A错误, 选A

3. try - catch - finally语句

程序由main方法进入, 然后执行到test方法中, test方法中使用了try-catch-finally语句, 由于try雨中只有一个负值语句和一个返回值, 所以不会抛出异常, 但是句子中存在finally语句, 那么这个return 不会直接返回, 而是进入执行finally中的语句, 也就是b+=10, 然后再返回b.

所以这题的答案为 30

4.对数值转换和赋值语句的理解

A float类型是在整形范围之内的, 如果将-412的int的值直接传给float类型, 结果是安全的

b选项中的012为8进制, 012转化为10进制值为10, 所以b没问题.

c byte的取值范围为 (-128 ~ 127)_所以C错误

D 0x12345678是16进制, 对应的10进制在int范围内, 同时也没有发生截断 ,是安全的

E 由于java中的boolean类型的值仅为ture和false, 而且在java中不像C和C++, c中的0和1可以分别代表false和true, 但是在java中的对错只能用true和false, 因此false个true是没有对应的10进制的值的, 所以E错误

所以选ABD

5.编程题: 不要2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值