只要是有学过Java的都一定知道static,也一定能多多少少说出一些作用和注意事项。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 Java中的`static`关键字在编程中扮演着至关重要的角色,它是Java面向对象特性的一个关键组成部分。`static`关键字用于修饰变量、方法以及嵌套类,它使得这些元素可以在不创建对象的情况下被访问。 我们来看一下`static`修饰的静态变量。静态变量,也被称为类变量,它们在内存中只有一个副本,所有该类的对象共享这同一个副本。这意味着,无论创建多少个类的实例,静态变量的值都是相同的。例如: ```java public class StaticDemo { private static int i = 50; private int j = 60; public static void main(String[] args) { StaticDemo staticDemo = new StaticDemo(); StaticDemo staticDemo1 = new StaticDemo(); // 输出50,因为i是静态变量,所有实例共享同一值 System.out.println(staticDemo.i); System.out.println(staticDemo1.i); // 改变i的值 staticDemo.i = 52; // 输出52,因为静态变量的改变会影响到所有实例 System.out.println(staticDemo1.i); // 实例变量j是独立的,每个实例有自己的副本 staticDemo.j = 65; staticDemo1.j = 70; // 输出各自实例的j值 System.out.println(staticDemo.j); System.out.println(staticDemo1.j); } } ``` 接下来,我们讨论`static`修饰的静态方法。静态方法与类相关联,而不是与类的实例相关联。这意味着,我们可以通过类名直接调用静态方法,无需创建对象。但是,由于静态方法不依赖于任何实例,所以它们不能访问非静态成员,因为非静态成员是在创建对象时分配的。`main`方法就是一个静态方法的例子,它作为程序的入口点,程序开始运行时会先加载类,此时还没有创建任何对象,因此`main`方法必须是静态的。 ```java public class StaticTest { private static int i; private int j; public StaticTest(int i, int j) { this.i = i; this.j = j; say1(); // 调用静态方法 } public void say1() { // 非静态方法,可以访问静态和非静态成员 System.out.println("you age is " + i); System.out.println("you age is " + j); } public static void main(String[] args) { StaticTest staticTest = new StaticTest(4, 5); StaticTest staticTest1 = new StaticTest(10, 69); // 输出各自实例的静态变量i System.out.println(staticTest.i); System.out.println(staticTest1.i); } } ``` 关于构造函数是否是静态方法,《Java编程思想》中的说法可能是指,虽然构造函数不直接使用`static`关键字,但它们在逻辑上类似于静态方法,因为它们在创建对象时被调用,且不依赖于实例状态。然而,构造函数并非真正意义上的静态方法,因为它们可以访问非静态成员并初始化实例变量。 `static`关键字在Java中用于定义类级别的变量和方法,允许我们在不创建对象的情况下进行操作。理解`static`的作用对于编写高效、清晰的Java代码至关重要。它帮助我们管理内存,特别是在处理大量对象时,通过共享静态变量可以减少内存消耗。同时,合理使用静态方法可以使代码结构更加清晰,提高代码的可读性和可维护性。
- 粉丝: 3
- 资源: 943
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 一对一MybatisProgram.zip
- 时变动态分位数CoVaR、delta-CoVaR,分位数回归 △CoVaR测度 溢出效应 动态 Adrian2016基于分位数回归方法计算动态条件在险价值 R语言代码,代码更数据就能用,需要修改的
- 人物检测37-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 人物检测26-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 人和箱子检测2-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 清华大学2022年秋季学期 高等数值分析课程报告
- GEE错误集-Cannot add an object of type <Element> to the map. Might be fixable with an explicit .pdf
- 清华大学2022年秋季学期 高等数值分析课程报告
- 矩阵与线程的对应关系图
- 人体人员检测46-YOLO(v5至v9)、COCO、Darknet、TFRecord数据集合集.rar