类变量/静态变量/static变量(一个意思)
普通属性/普通成员变量/非静态属性/非静态成员变量/实例变量/实例属性(一个意思)
类变量
- 类变量被同一个类中所有对象共享。
- 在类加载时就生成,所以即便是没有实例对象就能直接调用。
- 静态变量是该类中所有对象***共享的***,而实例变量是每个对象独享的。
通过 类名 . 类变量名 进行访问。
类方法
- 同静态方法/static方法。
- 访问修饰符+static+数据返回类型+方法名(){}
public class StaticMethod {
public static void main(String[] args) {
Stu stu1 = new Stu("张三");
stu.pay(1000);
stu.showFree();//通过对象调用。输出:学费:1000.0
Stu stu2 = new Stu("李四");
stu1.pay(1000);
stu1.showFree();//继续通过对象调用,输出:学费:2000.0
Stu.pay(1000);
Stu.showFree();//通过类名+方法名调用,输出:学费:3000.0
}
}
class Stu{
private String name;
private static double free;
public Stu(String name) {
this.name = name;
}
//定义一个方法计算总收费金额
public static void pay(double free){
Stu.free+=free;
}
public static void showFree(){
System.out.println("学费:"+Stu.free);
}
}
类方法的使用场景:
当方法中不涉及任何和对象相关的成员,则可以设置成静态方法。提高开发效率,比如untils下的Math类,Arrays类,Collection类。
在实际的开发中,往往会将一些通用的方法,设计成静态方法.这时不需要创建对象就能调用,比如打印数组,冒泡排序,完成某个计算任务等等。
例如:
class Cal{
public static double calSum(double n1,double n2){
return n1+n2;
}
}
注意事项:
- 类方法中不允许出现和对象有关的关键字,比如this,super,普通成员方法可以。
- 类方法只能访问类变量和类变量。
- 普通方法既可以访问类方法,也可以访问普通方法。