Java 静态变量与静态方法
Java 静态变量与静态方法一、静态变量类变量1. 什么是静态变量静态变量是该类所有对象共享的变量。任何一个对象访问它取到的都是相同地址的值。任何一个对象修改它修改的也是同一个变量。2. 定义语法推荐写法访问修饰符 static 数据类型 变量名;示例publicstaticintcount0;privatestaticStringname;staticdoublePI3.14;注意修饰符顺序可以调换但推荐按上述顺序书写。3. 访问方式类名.变量名 // 推荐 对象名.变量名 // 不推荐4. 使用注意事项对比项静态变量实例变量共享性所有对象共享每个对象独享访问方式类名或对象名只能对象名是否需要对象不需要需要关键点实例变量不能通过类名访问类变量在类加载时初始化无需创建对象类变量的生命周期随类加载开始随类消亡结束5. 什么时候用静态变量需要让某个类的所有对象共享一个变量时使用。示例统计所有学生缴纳的总学费classStudent{privatestaticdoubletotalFee0;publicStudent(doublefee){totalFeefee;}}二、静态方法类方法1. 什么是静态方法不需要创建对象就可以直接调用的方法适合通用功能。如 Math 类中的数学方法doubleresultMath.sqrt(81);// 无需创建Math对象2. 定义语法推荐写法访问修饰符 static 返回类型 方法名(参数) { // 方法体 }示例publicstaticvoidmyMethod(){}privatestaticintadd(inta,intb){returnab;}3. 调用方式类名.方法名() // 推荐 对象名.方法名() // 不推荐4. 完整示例publicclassStaticMethodDemo{publicstaticvoidmain(String[]args){MyMath.add(5,3);// 类名调用System.out.println(MyMath.sum);}}classMyMath{publicstaticintsum0;publicstaticvoidadd(inta,intb){sumab;// 只能访问静态变量}}5. 使用注意事项对比项静态方法普通方法隐含参数无this有this调用方式类名或对象名只能对象名能否使用this/super不能能访问限制静态方法只能访问静态变量和静态方法普通方法可以访问静态成员和非静态成员6. 什么时候用静态方法适合不适合工具方法如Math.max需要访问实例变量不依赖对象状态需要被子类重写纯函数输入决定输出需要与特定对象绑定自定义工具类示例publicclassMyMath{privateMyMath(){}// 私有构造防止实例化publicstaticintadd(inta,intb){returnab;}publicstaticbooleanisEven(intnum){returnnum%20;}}三、代码验证示例publicclassTest{publicstaticvoidmain(String[]args){AanewA();AbnewA();a.aa();// 静态变量10b.aa();// 同一个静态变量再10a.aa1();// a的实例变量10b.aa1();// b的实例变量10独立System.out.println(A.a);// 30共享累积System.out.println(a.b);// 20a自己的值}}classA{publicstaticinta10;// 静态变量publicintb10;// 实例变量publicvoidaa(){a10;}publicvoidaa1(){b10;}}运行结果30 20四、总结静态变量同类中所有对象共享访问的属性类名直接访问无需创建对象静态方法不用new就能直接使用的通用方法适合创建自己的工具库快速调用记忆要点静态只能访问静态非静态可以访问所有