11-21牛客Java选择题(错题记录)

1.通过以下哪些方法可反射获取到User对象中static属性的值?

A. User.class.getDeclareField(“name”).get(null);
B. User.class.getField(“name”).get(null);
C. User user = new User(); return user.getClass().getField(“name”).get(user);
D. User user = new User(): return user.getClass().getDeclareField(“name”).get(user);

2. final finally finalize的区别?

这三个关键词在Java中具有不同的含义和用法:

修饰类:被final修饰的类不能被继承,即为最终类。
修饰方法:被final修饰的方法不能被子类重写,即为最终方法。
修饰变量:被final修饰的变量表示常量,只能被赋值一次,之后数值不可改变。

final:final是Java中的关键字,用于表示一个最终的、不可改变的特性。它可以用来修饰类、方法和变量。
finally:finally是Java中的关键字,用于定义在异常处理结束时必须执行的代码块。无论是否发生异常, finally块中的代码都会被执行。通常用于释放资源或执行清理操作。
finalize:finalize是一个Object类的方法,在对象被垃圾回收器回收之前调用。在Java中,垃圾回收器负责管理内存,当一个对象不再被引用时,垃圾回收器会在适当的时机调用该对象的finalize方法进行资源释放和清理工作。然而,由于不确定性和性能问题,一般不建议依赖于finalize方法来释放资源,而是应该使用显式的资源管理方式,如try-with-resources结构或者手动资源释放。

因此,这三个关键词在Java中分别表示了最终特性、异常处理中的必要操作以及对象资源的释放与清理。

3.try 括号里有return语句,finally 的执行顺序?

在Java中,当try块中的代码包含了return语句时,finally块仍然会在方法返回之前执行。下面是try块中包含return语句时finally的执行顺序:

执行try块中的代码。
如果try块中的代码执行过程中遇到return语句,那么返回值会被保存起来,但是不会立即返回。
执行finally块中的代码。
最后,将保存的返回值返回给调用者。
即使在try块中遇到了return语句,finally块中的代码仍然会被执行,确保资源的释放和清理操作得以完成。只有在finally块执行完成后,才会真正地返回方法的结果。

需要注意的是,如果finally块中也包含了return语句,那么它将覆盖之前保存的返回值,成为最终的返回结果。因此,在包含return语句的try块中,应该谨慎处理finally块中的逻辑,避免对返回值造成意外影响。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值