Java static block静态快

本文探讨了静态变量和静态块在类实例化之前的初始化过程。静态变量独立于类实例存在,即使对象引用为null,静态变量仍会被初始化并持有其初始值。如果将变量声明为非静态,则在尝试访问前必须先创建类的实例。

static variables or static blocks in a class will be initialised before the class gets instantiated. Also, we all know that the static variables are not tied up with the instances. So even if we have the reference as null, the variable s value had already been initalised to "hello". So calling it that way will print the values Inside Method and Hello as the variable call will be made with the class name as they are tied up with the class . If you make the variable non - static , you will get a NPE.

 

静态变量和静态块在类被实例化之前,已经得到初始化。

### Java 中 `static` 关键字的含义 #### 静态成员 在 Java 中,`static` 是一个关键字,表示该成员属于类本身而不是某个特定的对象实例。这意味着无论创建多少个对象,静态成员只会存在一份副本,并且可以通过类名直接访问它而无需创建任何对象[^1]。 ```java class Example { static int count = 0; Example() { count++; } } public class Main { public static void main(String[] args) { System.out.println(Example.count); // 输出 0 new Example(); new Example(); System.out.println(Example.count); // 输出 2 } } ``` #### 静态方法 当方法被声明为 `static` 时,它可以不依赖于任何对象实例调用。这也是为什么像 `main` 方法这样的入口点可以作为程序启动的核心部分的原因之一[^3]。需要注意的是,静态方法无法直接访问非静态成员,因为它们并不隶属于具体的对象实例。 #### 静态代码块 除了用来标记字段和方法外,`static` 还可用于定义静态初始化块。这些代码块会在类第一次加载的时候被执行一次,通常用于完成一些必要的前期准备工作,比如设置初始状态或读取配置文件等内容[^4]。 ```java class StaticBlockDemo { static int value; static { value = computeValue(); // 假设这是一个计算函数 System.out.println("Static block initialized with value: " + value); } private static int computeValue() { return 42; // 示例返回值 } } ``` 尽管 C 和 C++ 的 `static` 可能会影响作用域范围,但在 Java 当中并不会如此;决定访问级别的仍然是诸如 `private`, `public`, 或者 `protected` 等其他关键词所控制的行为特性[^2]。 ### 总结 综上所述,`static` 主要涉及内存管理和共享资源的概念,在减少重复数据存储以及提供全局可及的功能方面发挥着重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值