java 关键字static

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38042891/article/details/70449714

在这里我用简单的语言给大家说说Static的原理和用法:

原理:

在生活中有一部分东西是可以共享的,在代码中也是一样的,有一部数据也是可以共享的通用的,大家都有的属性,比如:每个人的国籍,'性别',这部分数据可以放在内存中恢复共享一个数据共享区域,就是静态数据区。就是static


(1)static 关键字

static关键字可以修饰变量,那么修饰的成员变量的内存空间就会保护内存的数据区。

最基本的用法是,static 可以用于修饰成员变量和成员方法,我们将其称之为静态变量和静态方法,直接通过类名来进行访问。

当一个事物为static时,就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起,所以从未创建某个类的任何对象,也可以调用其static方法或访问其static域。

(2)static方法

被static修饰的方法属于类方法,我们称之为静态方法,访问方式为: ClassName.methodName()

由于他在类加载的时候就存在了,它不依赖于任何实例,所以 static 方法必须实现,也就是说他不能是抽象方法 abstract。

(3)static 代码块

静态代码块也是用于初始化一个类的时候做操作用的,和静态变量、静态方法一样会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。


面试题目:

1、”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

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

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

2、是否可以在static环境中访问非static变量?

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

3、静态方法能不能引用非静态资源?

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

4、静态方法里面能不能引用静态资源?

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

5、非静态方法里面能不能引用静态资源?

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


猜你喜欢

转载自blog.csdn.net/qq_38042891/article/details/70449714