首页 > Java开发 > 浅解Java中的不常用关键字

浅解Java中的不常用关键字

很多时候很容易混淆Java和C++中的关键字,现在就带大家来温习一下吧,别小看关键字,这个无论是在面试还是笔试甚至以后的编程生涯中,都相当的重要,很基本但是很容易忽略的知识呢。

Java关键字如下:

abstract default if private this
boolean do implements protected throw
break double import public throws
byte else instanceof return transient
case extends int short try
catch final interface static void
char finally long strictfp volatile
class float native super while
const for new switch
continue goto package synchronized

以上是java specifications中定义的keywords,一共48个,其中常见的三个看似是关键字的true, false, null,都不是关键字,而是作为一个单独标识类型。

其中,不常用到的关键字有:const,goto,native,strictfp,transient,volatile。

const和goto为java中的保留字。

native

简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。

标识符native可以与所有其它的java标识符连用,但是abstract除外。这是合理的,因为native暗示这些方法是有实现体的,只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体。

strictfp

strictfp, 即 strict float point (精确浮点)。
strictfp 关键字可应用于类、接口或方法。使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,可以用关键字strictfp。

transient

变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。

volatile

就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。

final

final可以修饰非抽象变量非抽象方法,非抽象类

final修饰的类:

  • final类不能被继承
  • final类中的变量和方法默认是final的

final修饰的变量:

  • final变量即常量,不可被赋值
  • final变量(如果不是private的)可以被继承

final修饰的方法:

  • final方法(如果不是private的)可以被继承
  • final方法不可以被复写

(private方法默认是final的,因为private方法不可以被继承,不可以被复写。但是你可以对private方法增加final修饰符,但是这并没有意义)

static

static是在内存中分配一块区域,供整个类使用。也就是说,不管这个类有多少个实例,这些实例的static类型的变量都是共用的。

static定义的变量和方法也可以直接通过类来调用,不需要通过类的一个实例来调用。

static可以修饰变量方法代码块。(static修饰类比较特殊,static不可以修饰外部类,只可以修饰内部类)

this和super

  1. this代表本对象,super代表父对象
  2. 调用本/父对象的属性和方法可以通过this./super.的形式
  3. 调用本/父类的构造方法可以用this()/super()的形式(注意:这两种形式只能出现在构造方法首行
  4. 静态方法中不能使用this和super。因为静态方法是类方法,不和类的具体实例打交道,而this和super是代表的对象实例。

overide和overload

 

Override:

重写

发生在父类和子类之间,子类重写父类的方法

方法的名称、参数、返回值要一模一样

Overload:

重载

发生在同一个类中

方法的名称一样,参数的个数、类型、顺序不一样

(注意:返回值、方法的作用域不一样的方法不叫Overload,否则编译报错)


本文固定链接: http://www.devba.com/index.php/archives/5141.html | 开发吧

报歉!评论已关闭.