Java程序员面试指南:面试者很容易忽视的几个Java关键词

Java中关键字有54个之多。常用的那些字不必说,有几个关键字并不常见,但是面试中可能成为面试官挖的一个坑,深坑。

今天我们就来总结下这几个沧海遗珠,下面和千锋广州小编一起来看看吧!

1、native

字如其名,用来修饰Java本地(原生)调用的方法。简单的说就是Java调用原生的C/C++的方法。NativeMethod是这样一个Java的方法:该方法的实现由非Java语言实现,比如C或者C++。

标识符native可以与所有其它的Java标识符连用,但是abstract除外。这是合理的,因为native暗示这些方法是有实现体的,只不过这些实现体是非Java的,但是abstract却显然的指明这些方法无实现体。在定义一个nativemethod时,并不提供实现体(有些像定义一个Javainterface),因为其实现体是由非Java语言在外面实现的

2、strictfp

strictfp,全称strictfloatpoint(精确浮点)。

strictfp关键字可应用于类、接口或方法。使用strictfp关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用strictfp关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是IEEE754算法对操作数预期的结果,以单精度和双精度格式表示。

在进行科学计算时可以使浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp。算钱的花还是算了,用整形会更好一点。

3、transient

transient(临时的)变量修饰符,只能用来修饰字段。被它修饰的变量,在对象存储时(序列化),这些变量状态不会被持久化。当对象序列化的保存在存储器上时,不希望有些字段数据被保存,为了保证安全性,可以把这些字段声明为transient。

4、volatile

volatile(易变的)变量修饰符,也只能用来修饰字段,用于多线程的场合。volatile修饰变量。在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。

这样可以防止两个方法同时被执行,还可以保证j和i被同时更新,这样一来i和j的值一直是一样的。

Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。

这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。

而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。

使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。

由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字

5、default

肯定有人说,这也算?哪个switch里没有个default?这里所说的default不是switch的默认,而是jdk8新增的特性。default方法。我们都知道在Java语言的接口中只能定义方法名,而不能包含方法的具体实现代码。接口中定义的方法必须在接口的非抽象子类中实现。也许oracle觉得这种方式太不方便了,写了接口还得写个抽象类去实现公有的方法,so在8上就出了这么个东西。

看下1.8的Map接口里的remove方法。接口的方法里竟然有方法体。

default方法,也可以称Defender方法,或者虚拟扩展方法(Virtualextensionmethods)。Default方法是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。

以上几个关键词,如果在面试中对答入流,那一定加分许多,千锋广州小编祝大家都能找到心仪的工作哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值