1. ”static”关键字是什么意思

  • “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

2. 为什么要用static关键字?

  • 通常来说,用new创建类的对象时,数据存储空间才被分配,方法才供外界调用。但有时我们只想为特定域分配单一存储空间,不考虑要创建多少对象或者说根本就不创建任何对象,再就是我们想在没有创建对象的情况下也想调用方法。在这两种情况下,static关键字,满足了我们的需求。

3.Java中是否可以覆盖(override)一个private或者是static的方法?

  • Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。

4.是否可以在static环境中访问非static变量?

  • static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

5.static静态方法能不能引用非静态资源?

  • 不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。

6.static静态方法里面能不能引用静态资源?

  • 可以,因为都是类初始化的时候加载的,大家相互都认识。

7.非静态方法里面能不能引用静态资源?

  • 可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。

8.java静态变量、代码块、和静态方法的执行顺序是什么?

  • 基本上代码块分为三种:Static静态代码块、构造代码块、普通代码块

代码块执行顺序静态代码块——> 构造代码块 ——> 构造函数——> 普通代码块 

继承中代码块执行顺序:父类静态块——>子类静态块——>父类代码块——>父类构造器——>子类代码块——>子类构造器

想要深入了解,可以参考这篇文章 :https://juejin.cn/post/6844903986475040781


1+2÷7
16 声望1 粉丝