Java基础——static关键字

对象只有在new的时候才会分配空间,有时候我们希望不管是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,就可以static修饰成员,也称静态成员或类成员。

static可修饰属性、方法、代码块、内部类。

特点:

  • 随着类的加载而加载(属于类),优先于对象存在。
  • static修饰的成员被所有对象所共享(也称类成员)。
  • 访问权限允许时,可不创建对象,直接被类调用。

静态成员引用格式:

java 复制代码
类名.[静态成员属性/成员方法]

示例:

java 复制代码
clasa Demo {
	private static String temp = "DEMO";
	public static void val() {
		System.out.println("Demo.val");
	}
}
class Test {
	public static void main(String[] args) {
		//直接使用类名调用
		System.out.println(Demo.temp;);
		Demo.val();
	}
}

静态属性、方法的设计思想:

  • 静态属性作为该类各个对象之间共享的变量。在设计类时,分析哪些属性不因对象的不同而改变,将这些属性设置为静态属性,相应的方法设置为静态方法。
  • 如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用静态方法,从而简化了方法的调用。

使用注意:

  • 类成员,直接使用类名.静态成员,不需要实例化。
  • static修饰的方法内只能调用static修饰的成员方法和成员变量,非static修饰的方法可以调用static修饰的成员(因为static修饰的成员优先对象加载)。
  • static修饰的方法不能被重写(因为static方法属于类,不属于对象)。
  • static方法内部不能有this和super(因为不需要实例就可以方法static方法,this和super都属于对象)。
相关推荐
咖啡八杯43 分钟前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育1 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵1 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔3 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
碎光拾影3 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
Marst Code4 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
Miao121314 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
腻害兔4 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
CRMEB系统商城5 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源