解答
首先要明确static这个“静态”其实是一种“全局和共享”的含义,属于Class本身,而不属于实例对象。也就是说不管是static方法还是static变量,只能通过(如下方Dog类)Dog.desc来调用, 不能使用smallDog.desc调用。因为不属于对象,也就不能用this.desc调用。
class Dog{
static desc = "good dog";
}
Dog smallDog = new Dog();
使用场景主要有三种:
1.修饰变量
2.修饰方法
3.静态块
1 static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
static成员变量的初始化顺序按照定义的顺序进行初始化。
2 static 方法
静态方法中一般用来操作静态变量,不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量
3 static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次
老师讲得真好,通俗易懂
有一次就是需要用static修饰变量,就是用类来调用
static 修饰的方法是静态方法,静态方法不依赖于对象,不需要将类实例化便可以调用
static 修饰的成员称为静态成员,它属于整个类所有,而不是某个对象,可以使用类名直接访问,也可以使用对象名进行访问
明白了这道题的关键之处
这个题好!!!
明白了static关键字的作用!