static的常见问题和使用误区

本文详细讲解了Java中static关键字的用途,包括为什么使用static、static的含义、static方法与非static变量的关系,以及static的使用误区,如静态方法不能直接访问非静态资源,static关键字不会改变访问权限等。
摘要由CSDN通过智能技术生成

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静态方法里面能不能引用静态资源?

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值