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都属于对象)。
相关推荐
小当家.105几秒前
Token成本控制实战:语义缓存、上下文压缩与工具缓存
java·spring·缓存·token·上下文
乐观勇敢坚强的老彭3 分钟前
C++ STL 常用容器的速查表
java·c++·算法
北冥you鱼5 分钟前
深入解析 Go 中 sync.YAML.Unmarshal:如何将 YAML 数据填充到 Config 结构体
开发语言·算法·golang
wwwzhouzy7 分钟前
SpringBoot 响应式编程
java·spring boot·后端·响应式编程
goldbin_zhang_xu16 分钟前
我用 Go 重写了一个 OpenClaw 框架:这就是 GoClaw
开发语言·后端·golang·agent框架·goclaw·双循环机制
lingran__16 分钟前
C++ STL map 与 set 底层剖析与模拟实现万字详解|基于红黑树,复刻 SGI-STL 泛型复用架构
开发语言·c++·stl·set·map·泛型编程·sgi-stl
野生技术架构师17 分钟前
Multi-agent的新趋势,从Agent Team到Agent Swarm
开发语言·人工智能
Bonnie_121520 分钟前
10-深入理解ConcurrentHashMap(JDK1.8)
java·开发语言
莫得感情 o22 分钟前
设计模式 22 · 三个冷门模式:中介者、访问者、解释器
java·设计模式
evans在进步36 分钟前
LeetCode 74:搜索二维矩阵——Java 虚拟一维数组与二分查找详解
java·leetcode·矩阵