Java中有很多被虚拟机保留的单词 这些单词就是java中的关键字。
本篇介绍final,static,continue,break这几个常用关键字的应用。
final关键字:
关键字可以使用在变量声明时,表示该变量一旦设定之后,就不可以再改变该变量的值,例如在下面的程序码中,PI这个变量一旦设定,就不可以再有指定值给 PI的动作:
final double PI = 3.14;
如果在方法成员声明时使用"final",表示该方法成员在无法被子类覆盖,例如:
public class Demo {
private double radius;
public final double getRadius() {
return radius;
}
// ....
}
如果您在声明类时加上"final"关键字,则表示这个类不可以被其它类继承,例如:
public final class Demo {
// ....
}
如果在数据成员上加上final关键字,但未给予该数据成员初值,则初值的初始化被延迟,该数据成员必须在构造方法中进行初始化,且初始化之后不得改变其值,例如:
public class Demo{
private final int some;
public Demo() {
some = 10;
}....
}
static关键字:
static对需要被共享的变量进行修饰了。
static修饰的变量,随着类的加载会被存储在内存中一个叫做共享区的地方,共享区中的数据生命周期是最长的,一直到程序结束,共享区的数据才会消失。
被static修饰的函数在本类中可以直接进行调用,在其他类中调用需要使用
类名.函数名 进行调用,它不能调用非静态的成员变量,但是可以对局部
变量进行操作
还可以使用static来定义一个代码块,叫做静态代码块。静态代码块可以在
类加载的时候对类进行初始化,当类第一次被调用加载时,静态代码块就会
被执行,例如下面的代码:
public class Demo
{
static{
//一些初始化的代码
}
………….
}
由于static成员属于类而不不是对象,所以在调用static方法时,并不会传入对象的位置引用,所以static成员中不会有this引用,所以在java中的static方法成员中不允许使用非静态成员,因为程序没有this来指向对象地址,也就无法辨别要存取哪一个对象的成员。
break与continue关键字:
在switch语句中主要用来结束当前的比对,进行下一个case的比对,在for,while与do while中,主要用于中断目前的循环执行。
的作用与break类似,主要使用于循环,所不同的是break会离开循环而continue
只会结束当前的循环,并调回循环开头继续下一个循环,而不会离开循环。例如:
class Demo
{
public static void main(String[] args){
for(int i=0;i<5;i++){
if(i=4){
break;
}
System.out.println(i);
}
}
}
这段代码会输出0,1,2,3因为当i=4的时候,使用了break结束了循环,所以输出不了4,5。
class Demo
{
public static void main(String[] args){
for(int i=0;i<5;i++){
if(i=4){
continue;
}
System.out.println(i);
}
}
}
而这段代码会输出1,2,3,5;当i=4的时候,使用continue会跳出当前循环,并进入下一个循环。
break 和 continue还可以配合标签使用,例如:
class Demo
{
public static void main(String[] args){
a: { for(int i=0;i<5;i++){
if(i=4){
break a;
}
System.out.println(i);
}
System.out.println("It's Demo");
}
}
}
a是个标签 当运行到break a时,会跳出标签的区域,System.out.println("It's Demo");
不会被执行。
continue也有类似的方法,但是标签只能设定在for之前
class Demo
{
public static void main(String[] args){
a:
for(int i=0;i<5;i++){
b:
for(int j=0;j<3;j++){
if(i=j){
continue a;
}
}
System.out.println(i);
}
}
}
continue配合标签使用可以跳至任何一层for循环。