java static 静态
static 是 java 语言中的关键字,意思是“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。static的作用就是用于区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身还是属于实例。静态变量是成员变量的一种,静态变量存储在方法区中,则它在类加载时就会进行初始化,所以静态变量访问的时候不需要创建实例(对象),直接可以通过类名来访问;什么时候使用静态变量?
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class StaticTest01 { public static void main(String[] args) { Chinese c1 = new Chinese( "张三" , "333333333333" , "中国" ); System. out .print( "姓名:" + c1.name); System. out .print( " 身份证号:" + c1.idNum); System. out .println( " 国籍:" + c1.nation); Chinese c2 = new Chinese( "李四" , "444444444444" , "中国" ); System. out .print( "姓名:" + c2.name); System. out .print( " 身份证号:" + c2.idNum); System. out .println( " 国籍:" + c2.nation); } } class Chinese { // 姓名; 实例变量 String name; //身份证号; 实例变量 String idNum; //国籍; 实例变量 String nation; //无参构造器 public Chinese() {} //有参构造器 public Chinese(String myName, String myIdNum, String myNation) { this .name = myName; this .idNum = myIdNum; this .nation = myNation; } } |
输出结果
1 2 | 姓名:张三 身份证号:333333333333 国籍:中国 姓名:李四 身份证号:444444444444 国籍:中国 |
对于静态变量,
对象级别的变量不需要static
类级别的变量需要static
对象级别:一个对象对应一份数据,各个对象都可以不同
类级别: 所有对象对应一份数据,各个对象都一样
所有静态相关的,直接使用类名去访问
静态方法只能访问静态的成员,不可以直接访问实例成员。
实例方法可以访问静态成员,也可以访问实例成员。
静态方法中是不可以出现this关键字的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package HJssss; public class zhuce { public static void main(String[] args) { int result; for ( int x = 1; x <= 10; x++) { result = square(x); // Math库中也提供了求平方数的方法 // result=(int)Math.pow(x,2); System. out .println( "The square of " + x + " is " + result + "\n" ); } } // 自定义求平方数的静态方法 public static int square( int y) { return y * y; } } |
这个代码如果去掉子方法里面的static就会报错,
简单点说 非静态方法可以调用静态方法及静态变量,静态方法不能调用非静态方法及变量。
被static修饰的可以直接通过Class.的方法调用,而非静态方法必须有对象才能调用。
所以才会出错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)