6.5 关键字
6.5.1 native
native修饰的方法是一个本地方法,底层用C/C++语言编写的方法。该方法在Java层面没有方法体,因为它的方法体在C/C++程序中。
【修饰符】native返回值类型 方法名(【形参列表】);
如果Java程序中要调用或重写native方法,正常使用即可。
6.5.2 final
final:最终的
final可以修饰变量:它们的值都不能被修改
(1)局部变量:必须手动初始化,不能修改值
(2)成员变量:必须初始化(初始化方式有2种,一种是直接初始化,一种是通过构造器),没有set方法
publicclassMath{
publicstaticfinaldoublePI=3.14;
}
publicclassTriangle{
privatefinaldoublea;
privatefinaldoubleb;
privatefinaldoublec;
publicTriangle(doublea, doubleb, doublec){
this.a=a;
this.b=b;
this.c=c;
}
}
final可以修饰类:该类不能被继承,例如:String类、Math类等。
final可以修饰方法:该方法可以被子类继承,但不能被子类重写。
6.5.3 static
static:静态的
(1)修饰成员变量:称为静态变量
(2)修饰成员方法:称为静态方法
(3)加在import语句中:称为静态导入
(4)修改代码块:静态代码块(后面再讲)
(5)修饰成员内部类:静态内部类(后面再讲)
1、静态变量:
【修饰符】class类名{
【其他修饰符】static数据类型静态变量名;
【其他修饰符】数据类型实例变量名;
【修饰符】返回值类型方法名(【形参列表】){//形参也是方法的局部变量
数据类型局部变量名;
}
}
静态变量的值是该类所有对象共享的,因为它属于类,不属于某个具体的对象。
变量的分类:
(1)声明的位置和方式不同
局部变量:方法中,包括方法的()或{}
静态变量:方法外,有static修饰
实例变量:方法外,没有static修饰
(2)在内存中存储值的位置不同
局部变量:栈
静态变量:元空间/方法区
实例变量:堆
(3)默认值
局部变量:没有
静态变量:有
实例变量:有
(4)生命周期
静态变量 > 实例变量 > 局部变量
(5)作用域
静态变量 > 实例变量 > 局部变量
静态变量在当前类中任意位置都可以使用。
实例变量仅限于在当前类的非静态成员中使用。
局部变量仅限于声明它的{}中使用。
2、静态方法
当某个方法的调用,或方法的功能实现不依赖于当前类的对象,这样的方法就可以声明为静态方法。
在本类中:直接调用,并且在本类中任意位置都可以使用。
在其他类中:类名.静态方法
3、静态导入
importstatic包.类名.静态成员名;
importstatic包.类名.*;
4、静态与非静态的互访原则
静态 访问 非静态 (不允许)
静态 访问 静态
非静态 访问 非静态
非静态 访问 静态