Java之static使用之final的使用

static变量

public class Helloworld{
static String name=”nuocheng”;
String name3=”jiajia”;
public static void print(){
System.out.println(name);
//但是这里的使用System.out.println(name3);
//原因是静态方法中只能使用静态变量,不能使用非静态方法
//那如何调用非静态变量呢
Helloworld n=new Helloworld()
System.out.println(n.name3);
}
}

static 方法

public class Helloworld{
public static void print(){
System.out.println(“这是静态函数”);
}
public void show(){
System.out.println(“这是非静态函数”);
}
public static void main(String[] args){
//静态函数
print();
//非静态函数
Helloworld hello=new Helloworld();
hello.show();

}

}

static 使用静态初始化块

静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量

public class Helloworld{
int num1;
int num2;
static int num3;
//构造法
public Helloworld{
num1=91;
System.out.println(“构造方法给num1赋值”);
}
//初始化块
{
num2=74;
System.out.println(“初始化方法给num2赋值”);
}
//静态初始化块
static{
num3=83;
System.out.println(“静态初始化方法给num3赋值”);
}

public static void main(String[] args){
    Helloworld hello=new Helloworld();
    System.out.println("num1:"+hello.num1);
    System.out.println("num2:"+hello.num2);
    System.out.println("num3:"+num3);

    Helloworld hello2=new Helloworld();
}

}

final的使用规范:

1.final定义的类不能被继承
2.final定义的数据成员不能被更改
3.final定义的方法不能被重写

注意点

A类是B类的父类
{
    A a;
    B b=new B();
    a=b;
}
(用父类引用指向子类,a不能引用B类中新方法,如果A类(父类)的方法被B类(子类)重写,a可以作用到重写的方法上)
Fork me on GitHub