静态方法和非静态方法的区别:

非静态方法通常使用实例变量状态来影响方法的行为,用实例引用 Dog.eat();

静态方法不需要实例也可以调用,但是需要类例如Math.abs()

静态方法就是行为不依赖于实例变量,所以不需要类或对象,只需要类

通常,有静态方法的类不会实例化,比如public static void main(String[] args),这种都是为了启动或测试另一个类。

静态方法不能使用非静态变量

public class Main{
private int x;
public static void main(String[] args){
System.out.println(x);
}
}

静态方法也不能使用非静态方法

public class Main{
private int x;
public static void main(String[] args){
System.out.println(setX());
}
    public void setX(int x){
         this.x=x;
    }
}

静态变量和非静态变量:

静态变量:对于所有类的实例,值都是一样的,相当于,一个类有一个值,而不是一个实例有一个值,静态变量在类中共享。

非静态变量也就是实例变量,每一个实例有一个自己的变量

静态初始化的两个保证:

一个类中的静态变量会在创建这个类的任何对象之前,和任何方法运行之前初始化

static和finall 

标记finall表示,一旦初始化,变量就不会在改变了,常量,比如Math.PI

初始化一个静态最终变量的方法

public class Main{
    public static final int x=11;
}
public class Main{
      public static final double x;
    static{
        x=1.1;
    }
}
//如果不是这两种方法为最终变量赋值,就会报错

除此之外,final也可以修饰非静态变量,包括实例变量,局部变量,方法参数等,含义均为常量。除此之外,还可以使用final防止有人覆盖一个方法或建立一个子类

class Poof{
    //最终方法,不能覆盖这个方法
    final void calcWhuffie(){
    }
}
//最终类,不能扩展这个类(即不能建立子类)
final class MyMostPerfectClass(){
    }

 

posted on 2025-02-07 00:29  fafrkvit  阅读(106)  评论(0)    收藏  举报