Java众神之路(4)-关键字(下)
21.float
float是Java原始类型。
float变量可以存储单精度浮点值。
示例:
float ratio = 0.1f;
float diameter = 6.15f;
注释:
使用此关键字时应遵循下列规则:
Java中的浮点文字始终默认为双精度。要指定单精度文字值,应在数值后加上f或F,如0.01f。
由于浮点数据类型是实际数值的近似值,因此,一般不要对浮点数值进行是否相等的比较。
Java浮点数值可代表无穷大和NaN(非数值)。Float包装对象类用来定义常量MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY和NaN。
22.for
for关键字用于指定一个在每次迭代结束前检查其条件的循环。
示例:
int i; for(i=0;i<max;i++) { <statements> }
注释:
for语句的形式为for(initialize;condition;increment)
控件流进入for语句时,将执行一次initialize语句。
每次执行循环体之前将计算condition的结果。如果condition为true,则执行循环体。
每次执行循环体之后,在计算下一个迭代的condition之前,将执行increment语句。
23.if
if关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。
示例:
if(condition){ <statements> } if(condition){ <statements> } else{ <statements> }
注释:
if语句可以有可选的else子句,该子句包含条件为false时将执行的代码。
包含boolean操作数的表达式只能包含boolean操作数。
24.implements
implements关键字在class声明中使用,以指示所声明的类提供了在implements关键字后面的名称所指定的接口中所声明的所有方法的实现。
示例:
public class Truck implements IVehicle{ }
注释:
在上例中,Truck类必须提供在IVehicle接口中所声明的所有方法的实现。
否则,Truck类将是独立的;它可以声明其他方法和变量,并扩展另一个类。
一个类可以实现多个接口。
25.import
import关键字使一个包中的一个或所有类在当前Java源文件中可见。可以不使用完全限定的类名来引用导入的类。
示例:
import java.io.File; import java.net.*;
注释:
当多个包包含同名的类时,许多Java程序员只使用特定的import语句(没有“*”)来避免不确定性。
26.instanceof
instanceof关键字用来确定对象所属的类。
示例:
if(node instanceof TreeNode){ <statements> }
注释:
在上例中,如果node是TreeNode类的实例,或者是TreeNode的子类的实例,则instanceof表达式的值将为true。
27.int
int是Java原始类型。
int变量可以存储32位的整数值。
示例:
int number = 5; //十进制 int octalNumber = 0377; //八进制 int hexNumber = 0xff; //十六进制
注释:
Integer类是int原始类型的包装对象类。它定义代表此类型的值的范围的MIN_VALUE和MAX_VALUE常量。
Java中的所有整数值都是32位的int值,除非值后面有l或L(如235L),这表示该值应解释为long。
28.interface
interface关键字用来声明新的Java接口,接口是方法的集合。
接口是Java语言的一项强大功能。任何类都可声明它实现一个或多个接口,这意味着它实现了在这些接口中所定义的所有方法。
示例:
public interface IPolygon{ public float getArea(); public int getNumberOfSides(); public int getCircumference(); }
注释:
实现了接口的任何类都必须提供在该接口中的所有方法的实现。
一个类可以实现多个接口。
接口可以多继承,如:
public interface IA extends IB,IC,ID{ }
29.long
long是Java原始类型。
long变量可以存储64位的带符号整数。
示例:
long number=5; long anotherNumber=34590L; long octalNumber=0377; long hexNumber=0xffl;
注释:
Long类是long原始类型的包装对象类。它定义代表此类型的值的范围的MIN_VALUE和MAX_VALUE常量。
Java中的所有整数值默认都是32位的int值,除非值后面有l或L(如235L),这表示该值应解释为long。
30.native
native关键字可以应用于方法,以指示该方法是用Java以外的语言实现的。
示例:
native String getProcessorType();
注释:
native方法不在此文档的讨论范围内,它属于比较高级的应用,感兴趣的读者可以自行查资料学习。
31.new
new关键字用于创建类的新实例。
示例:
String sName = newString();
float fVal = newFloat(0.15);
注释:
new关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。
参数集合必须与类的构造方法的签名匹配。
等号(=)左侧的变量的类型必须与要实例化的类或接口具有赋值兼容关系。
32.null
null是Java的保留字,表示无值。
示例:
Integer i; i=null; String s; if(s!=null){ <statements> }
注释:
将null赋给非原始变量相当于释放该变量先前所引用的对象。
不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量。
33.package
package关键字指定在Java源文件中声明的类所驻留的Java包。
示例:
package com.mycompany; public class MyClass{ }
注释:
package语句(如果出现)必须是Java源文件中的第一个非注释性文本。
在上面的示例中,MyClass类的完全限定类名是com.mycompany.MyClass。
如果Java源文件不包含package语句,在该文件中定义的类将位于“默认包”中。请注意,不能从非默认包中的类引用默认包中的类。
34.private
private关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。
示例:
public class MyPublicClass{ private class MyPrivateClass{ } private int i; private String myMethod(){ <statements> } }
注释:
只能在声明private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。
所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
35.protected
protected关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
示例:
public class MyPublicClass{ protected class MyPrivateClass { } protected int i; protected String myMethod() { <statements> } }
注释:
可以在声明protected类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、方法或字段。
所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
36.public
public关键字是可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。
示例:
public class MyPublicClass{ public class MyPrivateClass { } public int i; public String myMethod() { <statements> } }
注释:
可能只会在其他任何类或包中引用public类、方法或字段。
所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
37.return
return关键字会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值。
示例:
public voidmyVoidMethod() { <statements> return; } public String myStringMethod() { String s="myresponse"; return s; } public int myIntMethod() { int i=5; return(i); }
注释:
如果方法具有非void的返回类型,return语句必须具有相同或兼容类型的参数。
返回值两侧的括号是可选的。
38.short
short是Java原始类型。
short变量可以存储16位带符号的整数。
示例:
short number = 5;
short octalNumber = 0077;
short hexNumber = 0xff;
注释:
Short类是short原始类型的包装对象类。它定义代表此类型的值的范围的MIN_VALUE和MAX_VALUE常量。
Java中的所有整数值都是32位的int值,除非值后面有l或L(如235L),这表示该值应解释为long。
39.static
static关键字可以应用于内部类(在另一个类中定义的类)、方法或字段(类的成员变量)。
示例:
1 public class MyPublicClass { 2 3 public finalstatic int MAX_OBJECTS=100; 4 5 static int _numObjects=0; 6 7 static class MyStatic { 8 } 9 10 static int getNumObjects() { 11 } 12 }
注释:
通常,static关键字意味着应用它的实体在声明该实体的类的任何特定实例外部可用。
static(内部)类可以被其他类实例化和引用(即使它是顶级类)。在上面的示例中,另一个类中的代码可以实例化MyStaticClass类,方法是用包含它的类名来限定其名称,如MyClass.MyStaticClass。
static字段(类的成员变量)在类的所有实例中只存在一次。
可以从类的外部调用static方法,而不用首先实例化该类。这样的引用始终包括类名作为方法调用的限定符。在上面的示例中,MyClass类外部的代码以MyClass.getNumObjects()的形式调用getNumObjects()static方法。
模式:
public final static<type>varName=<value>;
通常用于声明可以在类的外部使用的类常量。在引用这样的类常量时需要用类名加以限定。在上面的示例中,另一个类可以用MyClass.MAX_OBJECTS形式来引用MAX_OBJECTS常量。
40.super
super关键字用于引用使用该关键字的类的超类。
示例:
1 public class MyClass{ 2 3 public MyClass(String arg) { 4 super(arg); 5 } 6 7 public String myStringMethod() { 8 return super.otherStringMethod(); 9 } 10 }
注释:
作为独立语句出现的super表示调用超类的构造方法。
super.<methodName>()表示调用超类的方法。只有在如下情况中才需要采用这种用法:要调用在该类中被重写的方法,以便指定应当调用在超类中的该方法。
41.switch
switch语句用于基于某个表达式选择执行多个代码块中的某一个。
示例:
1 int arg=<somevalue>; 2 3 switch(arg){ 4 case1: 5 <statements> 6 break; 7 case2: 8 <statements> 9 break; 10 default: 11 <statements> 12 break; 13 } 14 15 char arg=<somevalue>; 16 17 switch(arg) { 18 case 'y': 19 case 'Y': 20 <statements> 21 break; 22 case 'n': 23 case 'N': 24 <statements> 25 break; 26 default: 27 <statements> 28 break; 29 }
注释:
switch条件的计算结果必须等于byte、char、short或int。
case块没有隐式结束点。break语句通常在每个case块末尾使用,用于退出switch语句。
如果没有break语句,执行流将进入所有后面的case和/或default块。
42.synchronized
synchronized关键字可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。
示例:
1 public class MyClass { 2 3 public synchronized static String mySyncStatic Method(){ 4 } 5 public synchronized String mySyncMethod() { 6 } 7 } 8 9 public class MyOtherClass { 10 11 Object someObj; 12 13 public String myMethod() { 14 <statements> 15 synchronized(someObj) { 16 <statementsaffectingsomeObj> 17 } 18 } 19 }
注释:
synchronized关键字可防止代码的关键代码段一次被多个线程执行。
如果应用于静态方法(如上例中的MySyncStatic Method),那么,当该方法一次由一个线程执行时,整个类将被锁定。
如果应用于实例方法(如上例中的MySyncMethod),那么,当该方法一次由一个线程访问时,该实例将被锁定。
如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。
43.this
this关键字用于引用当前实例。
示例:
1 public class MyClass { 2 int number; 3 4 public MyClass(int number) { 5 this.number=number; 6 } 7 }
注释:
当引用可能不明确时,可以使用this关键字来引用当前的实例。
在上面的示例中,构造方法参数number与类的成员变量同名。this.number明确表示MyClass的该实例的number成员变量。
44.throw
throw关键字用于引发异常。
示例:
1 import java.io.IOException; 2 3 public class MyClass{ 4 public methodreadFile(String filename)throws IOException { 5 <statements> 6 if(error){ 7 throw new IOException("errorreadingfile"); 8 } 9 } 10 }
注释:
throw语句将java.lang.Throwable作为参数。Throwable在调用栈中向上传播,直到被适当的catch块捕获。
引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。
45.throws
throws关键字可以应用于方法,以便指出方法引发了特定类型的异常。
示例:
1 importjava.io.IOException; 2 3 public class MyClass { 4 public methodreadFile(String filename)throws IOException { 5 <statements> 6 if(error){ 7 throw new IOException("errorreadingfile"); 8 } 9 } 10 }
注释:
throws关键字将逗号分隔的java.lang.Throwables列表作为参数。
引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。
要在try-catch块中包含带throws子句的方法的调用,必须提供该方法的调用者。
46.transient
transient关键字可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。
示例:
public class MyClass {
private transient String password;
}
47.try
try关键字用于包含可能引发异常的语句块。
示例:
1 try { 2 <可能引发异常的块> 3 } catch(<java.lang.Exception或子类>e) { 4 <处理异常e的代码> 5 } 6 7 try { 8 <可能引发其他异常的块> 9 } catch(FooException e) { 10 <处理FooException e的代码> 11 } catch(BarException e) { 12 <处理BarExceptione的代码> 13 } 14 15 try { 16 <可能引发异常的块> 17 } catch(<java.lang.Exception或子类>e) { 18 <处理异常e的代码> 19 } finally { 20 <有异常或无异常情况下都执行的语句> 21 }
注释:
每个try块都必须至少有一个catch或finally子句。
如果某个特定异常类未被任何catch子句处理,该异常将沿着调用栈递归地传播到下一个封闭try块。如果任何封闭try块都未捕获到异常,Java解释器将退出,并显示错误消息和堆栈跟踪信息。
48.true
true关键字表示boolean变量的两个合法值中的一个。
示例:
boolean isComplete=true;
49.void
void关键字表示null类型。
示例:
1 public class MyClass { 2 3 public void doSomething() { 4 <statements> 5 return; 6 } 7 }
注释:
void可以用作方法的返回类型,以指示该方法不返回值。
50.volatile
volatile关键字用于表示可以被多个线程异步修改的成员变量。
注意:volatile关键字在许多Java虚拟机中都没有实现。
示例:
1 public class MyClass { 2 volatile int sharedValue; 3 }
注释:
volatile的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。
51.while
while关键字用于指定一个只要条件为真就会重复的循环。
示例:
1 while(!found) { 2 <statements> 3 }