天天看点

static关键字 final关键字用法

static关键字:(静态随着类的加载而加载)

1、被static修饰的变量变为静态变量,可以直接用类名来访问(类名.变量);

2、被static修饰的方法,可以直接用类名访问(类名.方法);

3、静态代码块,语法:

static {

//代码块

}

随着类的加载而加载,类加载的时候,静态代码块直接运行。

静态的不能访问非静态的

非静态的能访问静态的

静态的可以访问静态的

规范:按规则对待,一般静态变量名大写。

补充:静态方法也可以使用对象调用;类加载的时候,静态数据在内存中了。

public class Demo{

public static void main(String[] args){

Demo1.fun();

System.out.println(Demo1.i);

}
           

}

class Demo1{

public static int i=10;//可以不赋值,用类名可以直接调用,静态变量

public int j=20;//静态方法不能访问非静态变量

public static void fun(){//静态方法,可以用类名直接调用 类名.fun();
    i=100;//静态变量被方法修改值后,静态变量将会被改变
    System.out.println("静态方法");//+j
}
           

}

public class Test1{

static{

System.out.println(“我是静态代码块”);

}

}

final关键字:

1、被final修饰的类不能被继承;(被称为最终类)

2、被final修饰的方法不能被重写;

3、被final修饰的变量不能被修改;(变为常量)一般定义为final static

(Final修饰的局部变量,可以不赋值,全局变量必须赋值。)

4、方法内部类只能访问被final修饰的局部变量。

public class Demo{

public static void main(String[] args){

Person p=new Person();

p.fun();

}

}

class Person{//被Final修饰的类称为最终类,不能被继承

public final int age=22;//被final 修饰的变量必须赋值

public void fun(){

final int i;//被方法修饰的方法里面的变量可以不赋值

//,不过没意义,一般赋值,赋值后也不可以改变

//age=23;被final修饰的变量不能被修改//包括传参

}

}

class Student extends Person{

public final void fun(){}

}