this 关键字,static 关键字,super 关键字,final 关键字, throw 关键字
这是java中的几个关键字,总结下来,以便以后看着方便,供大家参考,有错误的请指教指教。
一、 this 关键字
this 指代类中当前对象,用于在方法中访问对象的其他成员。
this 关键字在程序中的3中常见用法
(1)、通过this关键字可以明确地访问一个类的成员变量,解决成员变量与局部变量名的冲突问题。
(2)、通过this关键字可以调用成员方法,不过调用成员方法时,可用可不用。
(3)、构造方法是在实例化对象时被JAVA虚拟机自动调用的,在程序中不能像调用其他方法一样去调用构造方法,但可以在一个构造方法中使用“this([参数1,参数2….])”的形式来调用其他的构造方法。
{ 在使用this调用类的构造时,应注意以下几点:
1、 只能在构造方法中使用this调用其他的构造方法,不能在成员方法中使用。
2、 在构造方法中,使用this调用构造方法的语句必须位于第一行,切只能出现一次。
3、 不能在一个类的两个构造方法中使用this互相调用。
}
二、 static 关键字
static关键字用于修饰类的成员,如成员变量、成员方法以及代码块等。
1、 静态变量:
在java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问。//static关键字只能用于修饰成员变量,不能用于修饰局部变量
2、静态方法:
在类中定义的方法前加上static关键字的方法称为静态方法。
静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。
//在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。
3、静态代码块
在java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块被称作静态代码块。当类被加载时,静态代码块会被执行,由于类只加载一次,因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。
class ExampleStati{
static {
System.out.println("静态代码块1");
}
public static void main(String[] args){
Person p1=new Person();
Person p2=new Person();
}
}
class Person{
static {
System.out.println("Person类中的静态代码块");
}
}
-----------------------------------------------------------------
静态代码块
Person类中的静态代码块
------------------------------------------------------------------
//静态代码块在类的第一次使用时会被加载,并且只会加载一次。
三、 super关键字
super关键字用于访问父类的成员,例如:访问父类的成员变量、成员方法和构造方法。
1、 使用super关键字访问父类的成员变量和成员方法。
例:
super.成员变量
super.成员方法([参数1,参数2…])
2、 使用super关键字访问父类的构造方法
super([参数1,参数2….])
//通过super调用父类构造方法的代码必须位于子类构造方法的第一行,并且只能出现一次。
不过在定义一个类时,如果没有特殊需求,尽量在类中定义一个无参的构造方法,避免被继承时出项错误,因为子类在实例化时会默认调用父类的无参构造方法。
四、 final关键字
final关键字可用于修饰类,变量和方法,它有“无法改变”或者“最终”的含义,因此被finall修饰的类、变量和方法将具有以下特性:
1、 final修饰的类不能被继承,即不能派生子类
2、 final修饰的方法将不能被子类重写//当在父类中定义某个方法时,如果不希望被子类从写,就可以使用fianl关键字修饰方法。
3、 final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。
//final修饰的变量一旦被赋值,其值不能改变。
//使用final修饰成员变量时,需要在定义变量的同时赋予一个初值(final String name=”小明”;)
五、 throws关键字
java中允许在方法的后面使用throws关键字对外声明该方法可能发生异常,这样调用者在调用方法事,就明确地知道该方法有异常,并且必须在程序中对异常进行处理,否则编译无法通过。
throws关键字声明抛出异常的语法格式:
修饰符 返回值类型 方法名([参数1,参数2…])throws ExceptionType1[,ExceptionType2….]{ }
Throws关键字需要写在方法声明的后面,throws后面需要声明方法中发生异常的类型,通常将这种做法称为方发声明抛出一个异常。