static关键字
static关键字
在类中使用就修饰成员变量,在方法中使用就是修饰成员方法。
加在方法上就是静态方法,加在属性上就是静态属性
静态属性
public class Student{
private static int age;//静态变量
private double score;//非静态变量
public static void main(String[] args){
Student s1 = new Student();
System.out.println(Student.age);//类变量 通过类来调用
System.out.println(s1.age);//通过对象来调用
System.out.println(Student.score);//这个会报错 not static field 非静态字段 不能这样使用
}
}
静态变量推荐用类名来访问
静态变量对这个类来说,在内存中只有一个,能够被类中所有的实例去共享
静态方法
public class Student{
private static int age;//静态变量
private double score;//非静态变量
public void run(){
//非静态方法可以直接访问类中的静态方法
go();
}
public static void go(){
//静态方法里面可以去调用静态方法,但不能调用普通方法
}
public static void main(String[] args){
//直接run()会报错 需要通过对象去调用
new Student().run();
go();//这样是可以的 等同于 Student.go() 因为它在当前类中 static会跟类一起加载出来
}
}
静态代码块
public class Person{
//匿名代码块程序在执行的时候不能去主动调用这些模块,是在创建对象的时候就自动创建了(早在构造器之前)
//静态代码块是跟类加载的时候一起执行,永久只执行一次
{
//匿名代码块
//用于赋初值
//一般不推荐使用
}
static{
//用static静态代码块 方便初始化一些东西
}
}
public class Student{
//执行(输出)顺序是 1.静态 2.匿名 3.构造
//再s2一次 静态代码块就会不输出了 静态代码块只执行一次
//而其他的 对象一创建就先走匿名代码块再走构造方法
{
System.out.println("匿名代码块");
}
static{
System.out.println("静态代码块");
}
public Student(){
System.out.println("构造方法");
}
public static void main(String[] args){
Student s1 = new Student();
Student s2 = new Student();
}
}
静态导入包
本来是这样式的
public class Test(){
public static void main(String[] args){
System.out.println(Math.randam());//生成随机数
}
}
静态导入后
//静态导入包 甚至可以导Math里面的方法如random之类的
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Test(){
public static void main(String[] args){
System.out.println(randam());//生成随机数
System.out.println(PI));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人