当前位置: 首页 > news >正文

JAVA--- 关键字static

之前我们学习了JAVA 面向对象的一些基本知识,今天来进阶一下!!!

static关键字

static表示静态,是JAVA中的一个修饰符,可以修饰成员方法,成员变量,可用于修饰类的成员(变量、方法、代码块)和嵌套类。

静态变量

静态变量属于类,并非类的某个实例。

无论创建多少个类的对象,静态变量只有一份存储在内存中。

静态变量可通过类名直接访问,也能通过对象实例访问。

class Student {static int totalStudents; // 静态变量,记录学生总数//被所有 Student 对象共享。每创建一个 Student 对象,totalStudents 的值就会加 1。String name;public Student(String name) {this.name = name;totalStudents++; // 每创建一个学生对象,总数加 1}
}public class StaticVariableExample {public static void main(String[] args) {Student s1 = new Student("Alice");  //new关键字,堆内存Student s2 = new Student("Bob");System.out.println("Total students: " + Student.totalStudents); // 通过类名访问静态变量System.out.println("Total students (via s1): " + s1.totalStudents); // 通过对象实例访问静态变量}
}

静态方法

静态方法属于类,而非类的某个实例;

可以通过类名直接调用静态方法,无需创建类的对象;

静态方法只能访问静态成员(静态变量和静态方法),不能访问实例成员(实例变量和实例方法),因为静态方法在类加载时就已存在,此时可能还没有创建对象。

class MathUtils {static int add(int a, int b) { // 静态方法return a + b;}
}public class StaticMethodExample {public static void main(String[] args) {int result = MathUtils.add(3, 5); // 通过类名调用静态方法System.out.println("3 + 5 = " + result);}
}

拓展:工具类

工具类是帮我们做一些事情的,但是不描述任何事物的类!

JavaBean类

用来描述一类事物的类

e.g. Student,Teacher,Dog,Cat 等

测试类用来检查其他类是否书写正确,带有main方法的类,使程序的入口
工具类帮我们做一些事情的,但是不描述任何事物的类
 工具类书写规则:

1.类名见名知意

2.私有化构造方法                      

public class ArrUtil{private ArrUtil(){}
}

3.方法定义为静态     

   

静态代码块

静态代码块在类加载时执行,且仅执行一次。它通常用于对静态变量进行初始化操作。

class MyClass {static int value;static {// 静态代码块value = 10;   //对value静态变量进行初始化System.out.println("Static block executed.");}
}public class StaticBlockExample {public static void main(String[] args) {System.out.println("Value: " + MyClass.value);}
}

静态嵌套类

静态嵌套类是定义在另一个类内部的静态类。它可以直接访问外部类的静态成员,但不能直接访问外部类的实例成员。

class OuterClass {static int outerStaticVar = 10;int outerInstanceVar = 20;static class StaticNestedClass {void display() {System.out.println("Outer static variable: " + outerStaticVar);// 不能访问 outerInstanceVar,因为它是实例变量// System.out.println("Outer instance variable: " + outerInstanceVar); }}
}public class StaticNestedClassExample {public static void main(String[] args) {OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();nested.display();}
}

StaticNestedClass 是静态嵌套类,可直接访问外部类的静态变量 outerStaticVar

static的注意事项

1.静态方法只能访问静态变量和静态方法;

2.非静态方法可以访问静态变量或者静态方法,也可以访问非静态成员的成员变量和非静态的成员方法;

3.静态方法中是没有this关键字的。

        

重新认识main方法

public class HelloWorld{public static void main(String[] args){System.out.println("HelloWorld");}
}
public被JVM调用,访问权限足够大
static

被JVM调用,不用创建对象,直接类名访问

因为main方法是静态的,所以测试类中的其他方法也需要是静态的

void被JVM调用,不需要给JVM返回值
main一个通用的名称,虽然不是关键字,但是被JVM识别

 

相关文章:

  • JSON配置文件格式全解析与多语言实战指南
  • 合并两个有序链表
  • 第十五章-PHP文件编程
  • 课程管理:借助教学管理系统,优化教学资源配置​
  • 从零构建Dagster分区管道:时间+类别分区实战案例
  • 无人机航拍牛羊检测数据集VOC+YOLO格式1021张3类别小目标
  • ctf.show 卷王杯 pwn签到
  • 【计算机网络】DHCP——动态配置ip地址
  • linux 内核 debugfs 使用介绍
  • 精益管理是什么?如何才能实现精益管理?
  • 编程中如何与AI交互-结构化输入和理解确认机制
  • Qt开发之C++泛型编程进阶
  • 使用LangChain连接远程Oracle数据库尝试LLM 提供的SQL智能助理
  • 2024jxcpc D.Magic LCM (logn筛质因子)
  • 《递归:C语言中的强大工具》
  • 【缓冲区分析】叠加分析-要素叠加
  • 时态--09--动词过去式、过去分词
  • 批量打印工具使用全攻略
  • 无需下载,免费在线AI音乐生成器:爱狐AI详解与使用
  • 基于PLC的图书管理识别系统设计
  • 韩国下届大选执政党初选4进2结果揭晓,金文洙、韩东勋胜出
  • 绿地控股:今年一季度营业收入356亿元,中高层管理人员带头降薪
  • “杭州六小龙”的招聘迷局
  • 俄乌战火不熄,特朗普在梵蒂冈与泽连斯基会晤后口风突变
  • 日本大米价格连续16周上涨,再创最高纪录
  • 一季度全国城镇新增就业308万人