java 令新手头疼的static和final关键字
本文章专门针对新手而写,不会涉及到复杂的原理,主要帮助新手理解和理清思路。
目录
一,static关键字
1.static变量
2.static方法
3.static块
二,final关键字
1.final变量
2.final方法和final类
三,final和static共用
一,static关键字
一.1 static变量
在java中static修饰的变量被叫做静态变量,static修饰的变量只能在类中,方法外的全局变量,在Java中实例变量也就是普通的声明变量属于该对象所有,而static修饰的变量归类所有,也就是说不需要对象引用,直接可以用类名.变量调用。
//static变量,该变量不能在方法中声明
public static String = "Hello,java";
一.2 static方法
static用简单的话去理解就是把一个方法绑定给类,可以直接用类名.方法()实现。static方法是属于类的,因此不可以使用this关键字获取对象引用。
public class StaticFunction(){
//静态方法
public static void text1(){
//。。。
}
//非静态方法
public void text2(){
//。。。
}
}
public class Main(){
public static void main(String[] args){
//对象调用方法
StaticFunction sf=new StaticFunction();
//报错,无法调用。sf.text1();
sf.text2();
//类直接调用方法
StaticFunction.text1();
//报错,无法调用。StaticFunction.text2();
}
}
一.3 static块
static块一般用于类的初始化,构建类,类创建时运行,减少代码冗余,浪费内存空间(不常用)。
//static变量,该变量不能在方法中声明
static {
}
二,final关键字
二.1 final变量
final修饰的变量要初始化,且一旦初始化后不能再被修改。
//static变量,该变量不能在方法中声明
final int a = 10;
final int b ;
final int c ;
//a=100;报错,无法修改
b=100;
System.out.prinln(b);
//打印b,正常输出100;
//System.out.prinln(c++); 报错,未初始化无法递加,初始化后不可修改。
二.1 final方法
final修饰的变量要初始化,且一旦初始化后不能再被修改。
二.1 final方法和final类
被final修饰的方法和类被叫做太监,没有子孙。final修饰方法,该方法不可被子类重写覆盖,final修饰类,该类不可以被继承。
三,final和static共用
static和final共用:
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,初始化之后不可以更改值,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问。