static静态修饰符的用法和需要注意的地方

本文围绕面向对象中static修饰的内容展开。介绍了static修饰成员变量和方法的相关知识,包括访问方式、注意事项,指出静态数据早于非静态数据存在于内存中。还解答了面试题,说明在static环境中不能访问非static变量的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象中static修饰的内容隶属于类而不是属于对象

1. static用来修饰成员变量:

  • 被static修饰的成员变量叫静态成员变量,如果没有被修饰叫非静态成员变量
  • 定义变量后只运行一次代码的初始化操作,之后会跳过该初始化操作
  • 设置静态全局变量一般是为了解决数据共享问题
  • 静态变量是属于这个类,而不是属于某个对象的
1.1. 静态成员变量的访问方式:
  1. 用对象进行访问:对象名.变量名
  2. 可以通过类名来访问:类名.变量名
1.2. 需要注意的地方:
  1. 只有数据需要共享时才需要static来修饰
  2. 只有静态变量才能有类名访问
  3. 局部变量不允许被static修饰

2. static用来修饰方法:

2.1. 静态方法的访问方式:
  1. 用对象进行访问:对象.方法名()
  2. 可以通过类名来访问:类名.方法名()
2.2. 需要注意的地方:
  • 静态方法可以用对象或类名调用,非静态方法只能用对象调用
  • 静态方法可以访问静态成员变量,不能访问非静态的成员变量,非静态的方法中可以访问任何成员变量
  • 静态方法可以直接访问静态方法,但是不能访问非静态方法
  • 静态方法中不允许出现this关键字和super关键字的
3.特点:静态的数据早于非静态的数据存在于内存中
面试题:是否可以在static环境中访问非static变量?
  • static变量在Java中是属于类的,它在所有的实例中的值是一样的,当类被Java虚拟机载入的时候,会对static变量进行初始化,如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没跟任何实例关联上
  • 因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值