`
xiangpin
  • 浏览: 9061 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

java关键字的使用详情

阅读更多
Java关键字(keyword)和保留字(reserved word)的用法
在java中有48个关键字和2个保留字。经过学习,借助了谷歌的力量我将这些关键字和保留字整理如下。
一.访问限定。
1.public关键字: public的意思是公有的,public作为关键字可以放在类前,表示这个类可以被其他包中的类的对象所访问。Public限定的类在文件中只允许有一个,且类名必须与文件名相同。
如果public用来修饰方法,表示方法可以被其他包中的类调用。
如果public用来修饰属性,则可直接通过对象名.属性来访问对象的属性。

2.private关键字: private的意思是私有的,其可调用性范围最小。
在方法的前面加上private,则方法只能由内部的方法或者构造器调用,通常,属性都是用private限定的,而一般的类前,都不加private限定。
在类继承时,父类中的private方法将不能被子类继承。
当我们给某个构造器加上private修饰符时,则不能创建某个类的对象。

3.protected关键字:protected限定符界于public和private之间。被protected限定的方法,子类可以继承,在同一个包内可以访问,在不同的包内不可以访问。

这些关键字的用法如上所述,但为了更好的理解一些细节的问题,大家可以看一下我对下面这些问题的总结。

那么,一个类中是否可以定义两个或者两个以上的public类?
我们可以在eclipse 中运行一下,结果如下:

由上可见,在一个类中,Public限定的类在文件中只允许有一个,且类名必须与文件名相同。若在类里面还要创建一个类的话,那就只能是默认的,不可以加其他访问修饰符,或者,可以在已有的类的内部,再创建一个类,但名字必须不同与文件名。

若属性使用public进行修饰,就可以直接通过对象•属性来访问对象的属性。

输出结果是name=向聘。这里就是直接通过创建的对象 st.name来访问st对象的name属性的。

另外,我们还要注意,在接口中默认的访问修饰符是public ,在定义方法的时候是不可以用protected或private来替代的。接口都是要通过子类继承并重写方法来实现的,否则就会报错,若用private来修饰接口,则接口是不能被继承的。而protected限定的类只能在包内继承,不能在包外继承,所以,也不能用来修饰接口。当然,这些只是我想的具体化一点的理解。或者你可以直接认为是“因为接口默认的访问修饰符就是public的,表示它只接受public的访问修饰符”。

二.类,方法和变量修饰符。

4.Static关键字:static的意思是静态的。
Static的使用方法如下:当一个方法被static限定时,可以直接使用类名.静态方法名()调用。而不是static限定的方法必须先创建对象,通过对象才能够调用方法。
Static的属性又称为类属性,可以不创建类的对象而直接调用。且类的某一个对象static属性值改变后,这个类的所有对象的属性值都会改变。(也就是说,用static声明的属性只在内存中存在一份)。

5.final关键字:final的意思是最终的。
当final放在属性前,即表示这个属性是个常量,这个属性的值是不能改变的。
当final放在方法前,则表示当子类继承时,不可以重写这个方法。
当final放在类前时,则表示这个类不能被继承。
当一个属性要用到匿名内部类里面时,必须用final来修饰它。

那么,使用static关键修饰变量后,循环创建10个对象输出结果是什么?原因是为什么?
请看下面的程序段:

输出的结果是i=0,i=1,i=2,i=3,i=4,i=5,i=6,i=7,i=8,i=9(注意换行输出)。
那么,为什么会这样呢。这就归结于static声明的属性改变后,它在这个类中的所以属性都会改变了。也就是在内存中上述程序中的i只占有1个内存。

6.class关键字:class的作用就是用来声明一个类,且类名要与文件名相同。

7.abstract关键字:abstract的意思是抽象的。
abstract class定义了一个抽象类,抽象类是介于接口和类之间的定义。在抽象类中,可以定义已经实现了的方法,也可以定义像接口中一样没有实现的方法(即抽象方法),但是继承的子类中必须实现抽象类中没有实现的方法。子类只能同时继承一个抽象类。

8.interface关键字:interface的作用就是定义一个接口。接口中定义了一个没有任何方法体实现的方法,只要定义方法返回类型,方法名,参数表,不能有实现。接口是不能直接实例化一个对象的,必须要通过子类继承后重写方法来实现它。

9.extends关键字:extends的作用就是继承类。用此关键词继承的子类,拥有了主类的方法和属性,不需要再把父类中所有的方法都写出来,只需要重写我们需要的方法。
一个类只能有一个父类。

10.implements关键字:implements的作用就是继承接口。Implements与extends是不同的,实现类中,必须重写接口中定义的方法。
一个类可以实现多个接口。

11. native关键字: native的意思是本地的。
native 关键字可以应用于方法,以指示该方法是用 Java 以外的语言实现的。

12.new关键字:new是新,创建的意思。
new 关键字用于创建类的新实例。
new 关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。
例如:student st=new student();
参数集合必须与类的构造方法的签名匹配。
= 左侧的变量的类型必须与要实例化的类或接口具有赋值兼容关系。

13. strictfp关键字:strictfp是严格,精准的意思。
strictfp的意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令人满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果想让浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字

14. synchronized关键字:synchronized是线程、同步的意思。
synchronized 关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。
synchronized 关键字可防止代码的关键代码段一次被多个线程执行。
如果应用于静态方法,那么,当该方法一次由一个线程执行时,整个类将被锁定。
如果应用于实例方法,那么,当该方法一次由一个线程访问时,该实例将被锁定。
如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。

15. transient关键字:transient是短暂,瞬时的意思。
transient 关键字可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。
当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
     transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。

16. volatile关键字:volatile是易失的意思。
volatile 关键字用于表示可以被多个线程异步修改的成员变量。
注意:volatile 关键字在许多 Java 虚拟机中都没有实现。 volatile 的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。


三.程序控制语句。
17. break关键字:break的意识是 跳出,中断。
break 关键字用于提前退出 for、while 或 do 循环,或者在 switch 语句中用来结束 case 块。
break 总是退出最深层的 while、for、do 或 switch 语句。

18.continue关键字:continu的意思是继续。
continue 关键字用来跳转到 for、while 或 do 循环的下一个迭代。
continue 总是跳到最深层 while、for 或 do 语句的下一个迭代。

19.Return关键字:return的意思是返回。
return 关键字会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值。
如果方法具有非 void 的返回类型,return 语句必须具有相同或兼容类型的参数。
返回值两侧的括号是可选的。

20.Do关键字:do的意思是运行。
do 关键字用于指定一个在每次迭代结束时检查其条件的循环。
do 循环体至少执行一次。
条件表达式后面必须有分号。

21.While关键字:while的意思是循环。
while 关键字用于指定一个只要条件为真就会重复的循环。

22.if关键字:if的意思是如果。
if 关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。
if 语句可以有可选的 else 子句,该子句包含条件为 false 时将执行的代码。
包含 boolean 操作数的表达式只能包含 boolean 操作数。

23.else关键字:else的意思是否则。
else 关键字总是在 if-else 语句中与 if 关键字结合使用。else 子句是可选的,如果 if 条件为 false,则执行该子句。

24.for关键字:for的意思是循环。
for 关键字用于指定一个在每次迭代结束前检查其条件的循环。
for 语句的形式为 for(initialize; condition; increment)
控件流进入 for 语句时,将执行一次 initialize 语句。
每次执行循环体之前将计算 condition 的结果。如果 condition 为 true,则执行循环体。
每次执行循环体之后,在计算下一个迭代的 condition 之前,将执行 increment 语句。

25.instanceof关键字:instanceof的意思是实例
instanceof 关键字用来确定对象所属的类。

26. switch关键字:switch的意思是观察。
switch 语句用于基于某个表达式选择执行多个代码块中的某一个。
switch 条件的计算结果必须等于 byte、char、short 或 int。
case 块没有隐式结束点。break 语句通常在每个 case 块末尾使用,用于退出 switch 语句。
如果没有 break 语句,执行流将进入所有后面的 case 和/或 default 块。

27. case关键字:case的意思是返回观察里的结果
case 用来标记 switch 语句中的每个分支。
case 块没有隐式结束点。break 语句通常在每个 case 块末尾使用,用于退出 switch 语句。
如果没有 break 语句,执行流将进入所有后面的 case 和/或 default 块。

28. default关键字:default的意思是默认。
default 关键字用来标记 switch 语句中的默认分支。
default 块没有隐式结束点。break 语句通常在每个 case 或 default 块的末尾使用,以便在完成块时退出 switch 语句。
如果没有 default 语句,其参数与任何 case 块都不匹配的 switch 语句将不执行任何操作。



四.错误处理
29.try关键字:try的意思是捕获异常。
try 关键字用于包含可能引发异常的语句块。
每个 try 块都必须至少有一个 catch 或 finally 子句。
如果某个特定异常类未被任何 catch 子句处理,该异常将沿着调用栈递归地传播到下一个封闭 try 块。如果任何封闭 try 块都未捕获到异常,Java 解释器将退出,并显示错误消息和堆栈跟踪信息。

30.catch关键字:catch的意思是处理异常。
catch 关键字用来在 try-catch 或 try-catch-finally 语句中定义异常处理块。
开始和结束标记 { 和 } 是 catch 子句语法的一部分,即使该子句只包含一个语句,也不能省略这两个标记。
每个 try 块都必须至少有一个 catch 或 finally 子句。
如果某个特定异常类未被任何 catch 子句处理,该异常将沿着调用栈递归地传播到下一个封闭 try 块。如果任何封闭 try 块都未捕获到异常,Java 解释器将退出,并显示错误消息和堆栈跟踪信息。

31.throw关键字:throw的意思是抛出一个异常对象。
throw 关键字用于引发异常。
throw 语句将 java.lang.Throwable 作为参数。Throwable 在调用栈中向上传播,直到被适当的 catch 块捕获。
引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。

32.throws关键字:throws的意思是声明一个异常可能被抛出。
throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常。
throws 关键字将逗号分隔的 java.lang.Throwables 列表作为参数。
引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常。
要在 try-catch 块中包含带 throws 子句的方法的调用,必须提供该方法的调用者。



五.与包相关。
33.Package关键字:Package是java程序中用来定义类的存放位置的关键字。
我们通常根据类的用途或其他的一些规则将某一组类放在同一种命名空间里。
Package可以由多级组成,在文件系统中,每一级则表示一个文件夹,在多级之间由.隔开。
而当我们要在另外一个包中要使用这个类时,就必须引入这个类或者写这个类的全限定名字。
34.import关键字:import的作用是用来引入要使用的类。
java.lang包中的类可以不需要用import语句直接使用。



六.基本类型。
35.boolean关键字:boolean是布尔型。
boolean 是 Java 原始类型。boolean 变量的值可以是 true 或 false。
boolean 变量只能以 true 或 false 作为值。boolean 不能与数字类型相互转换。
包含 boolean 操作数的表达式只能包含 boolean 操作数。
Boolean 类是 boolean 原始类型的包装对象类。

36.byte关键字:byte是字节型。
byte 是 Java 原始类型。byte 可存储在 [-128, 127] 范围以内的整数值。
Byte 类是 byte 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。

37.char关键字:char是字符型。
char 是 Java 原始类型。char 变量可以存储一个 Unicode 字符。
可以使用下列 char 常量:\b - 空格, \f - 换页, \n - 换行, \r - 回车, \t - 水平制表符, \' - 单引号, \" - 双引号, \\ - 反斜杠, \xxx - 采用 xxx 编码的 Latin-1 字符。\x 和 \xx 均为合法形式,但可能引起混淆。 \uxxxx - 采用十六进制编码 xxxx 的 Unicode 字符。
Character 类包含一些可用来处理 char 变量的 static 方法,这些方法包括 isDigit()、isLetter()、isWhitespace() 和 toUpperCase()。
char 值没有符号。

38.double关键字:double是双精度。
double 是 Java 原始类型。double 变量可以存储双精度浮点值。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java 浮点数值可代表无穷大和 NaN(非数值)。Double 包装对象类用来定义常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。

39,float关键字:float是浮点型。
float 是 Java 原始类型。float 变量可以存储单精度浮点值。
使用此关键字时应遵循下列规则:
Java 中的浮点文字始终默认为双精度。要指定单精度文字值,应在数值后加上 f 或 F,如 0.01f。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java 浮点数值可代表无穷大和 NaN(非数值)。Float 包装对象类用来定义常量 MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。

40.int关键字:int是整型。
int 是 Java 原始类型。int 变量可以存储 32 位的整数值。
Integer 类是 int 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。

41. long关键字:long是长整型。
long 是 Java 原始类型。long 变量可以存储 64 位的带符号整数。
Long 类是 long 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。

42.short关键字:short是短整型。
short 是 Java 原始类型。short 变量可以存储 16 位带符号的整数。
Short 类是 short 原始类型的包装对象类。它定义代表此类型的值的范围的 MIN_VALUE 和 MAX_VALUE 常量。
Java 中的所有整数值都是 32 位的 int 值,除非值后面有 l 或 L(如 235L),这表示该值应解释为 long。

43. null关键字:null是空。
null 是 Java 的保留字,表示无值。
将 null 赋给非原始变量相当于释放该变量先前所引用的对象。
不能将 null 赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。

44.true关键字:true是真
true 关键字表示 boolean 变量的两个合法值中的一个。

45.false关键字:false假。
false 关键字代表 boolean 变量的两个合法值之一。


七.变量引用。
46.super关键字:super是指的当前类的父类的对象。

47.this关键字:this是指的当前对象。
调用当前对象的构造方法格式:this(参数);
调用当前对象的方法:this.方法名();
系统在创建一个子类对象时,同时也创建了父类的对象,此时,可以使用super关键字引用到父类的对象从而调用父类中的方法。
Super关键字还可以在子类的构造器时使用,通过super调用父类的构造器(其方法同this调用自己的构造器的方法一样)都必须在第一行,且只能在构造器中调用一次。
调用格式请参考下面程序段:



48. void 无返回值
void 关键字表示 null 类型。
void 可以用作方法的返回类型,以指示该方法不返回值。


八.保留字。
1.Goto保留字:goto是跳转的意思。
goto 保留关键字,但无任何作用。结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。

2.Const保留字:const是静态的意思。
const 保留字,是一个类型修饰符,使用const声明的对象不能更新。与final某些类似.

在学习java关键字的时候,不仅仅要明白每一个关键字有什么作用。更加重要的是要自己动手去敲下代码,实现一下,那样我们会更加深刻的理解到一个关键字的用途。
总之,对关键字的掌握不是一朝一夕的,我们要在不断的实践中去学习。
这个,本人还只是java的初学者,如果有什么不对的地方,或者您有什么宝贵的意见都可以留言大家一起讨论哦!
因为我自己实现的一些关于程序段的图片没有显示出来,大家如果有兴趣可以看看上传的附件,更加详细哦!
3
1
分享到:
评论
5 楼 canghailan 2012-03-19  
xiangpin 写道
mfkvfn 写道
static除可以用于方法和属性外,还可用于类。

用static修饰类的时候,有什么作用呢?

静态内部类
4 楼 xiangpin 2012-03-19  
mfkvfn 写道
static除可以用于方法和属性外,还可用于类。

用static修饰类的时候,有什么作用呢?
3 楼 mfkvfn 2012-03-19  
static除可以用于方法和属性外,还可用于类。
2 楼 hanshifei 2012-03-18  
3.protected关键字:protected限定符界于public和private之间。被protected限定的方法,子类可以继承,在同一个包内可以访问,在不同的包内不可以访问。



对于protected元素,只要是子类,不论在不在一个包里,都可以访问的
1 楼 Carmen_hongpeng 2012-03-18  
哇,写的好详细啊

相关推荐

Global site tag (gtag.js) - Google Analytics