static的常见问题和使用误区 您所在的位置:网站首页 static环境中可以访问非static变量 static的常见问题和使用误区

static的常见问题和使用误区

2024-07-10 11:46| 来源: 网络整理| 查看: 265

static的常见问题和使用误区

学完static关键字的朋友,可能会产生很多疑问,所以本节主要讲解学习Java中关于static常见的几个问题。

1.为什么要用“static”关键字?

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

2.“static”关键字是什么意思?Java中子类是否可以重写父类的static方法?

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

Java中的static方法不能被重写,因为方法重写是基于运行时动态绑定的,而static方法时编译时静态绑定的。static方法跟类的任何实例都不相关。问static方法能否被重写,就相当于在问北京和上海的距离每天如何变化一样。 所以从概念上来说,“重写”与“static方法”是不适用的。

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

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

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

static方法不能直接引用本类中的非静态资源,因为本类中的非静态资源是new的时候才会产生的东西,对于初始化后就存在的静态资源来说,不能引用它。

但是,static方法可以通过传入一个引用类型参数的方式,间接地通过该引用类型的参数来访问该类(引用类型参数的类)中的非静态方法。

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

可以,因为静态资源都是类初始化时加载的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有