类变量/方法(静态变量/方法)

类变量/方法(静态变量/方法)

类变量也叫静态变量,同样的类方法也叫静态方法,那么与之相对应的就有非静态变量,非静态方法,也叫实例变量,普通变量,普通方法。各个地方因为翻译的问题,叫法不一样,实际上在英文里就是一个单词的区别 static

类变量

定义

访问修饰符 static 数据类型 变量名;

访问

类名.类变量名

也可以是类对象.类变量名

类变量的使用时机

当我们需要一个被所有对象所共享的一个变量时,就考虑使用,比如一个学生类,要统计每个学生所交的费用,Student(name, static fee)

类变量使用细节

  1. 类变量(静态变量)可以被类的所有对象共享,而实例变量是每个对象独享
  2. 加上static成为类变量(静态变量),不加就是实例变量/普通变量/非静态变量

类方法

类方法也叫静态方法定义如下

定义

访问修饰符 static 返回类型 类方法名 (){}

访问

和类变量类似

类名.类方法名

也可以是类对象.类方法名

类方法的经典使用场景

我们都知道Java的utils包里的Math方法,比如开根号

	Math.sqrt(9);

这就是典型的类方法使用,我们用这些方法,不需要为此实例化一个对象,直接类名点上方法名就可以拿来使用,提高了我们开发效率。如果在查看源码的时候,也可以发现这些方法前面都有static。

如果我们所写的方法不涉及非静态成员的使用,我们就可以吧这个定义为静态方法,比如打印数组啦,冒泡排序啦之类的。

类方法和普通方法的不同

  1. 类方法/变量(静态方法/变量)都是随着类的加载而加载,类方法中没有this的参数。

    而普通方法隐含this参数

  2. 类方法(静态方法)可以通过类名,也可以通过对象来调用

    普通方法只能通过对象去调用,不能通过类名去调用。

  3. 类方法(静态方法)不允许使用关于对象的关键字,如this,super

    而普通方法可以使用

  4. 类方法(静态方法)只能访问静态成员

    普通方法可以访问所有成员

class Person{
    private int id;
    private static total = 0;
    public static void setTotal(int total){
        this.total = total;//错误,static方法中不可以使用this
        id = total;//错误,静态方法不可以访问非静态成员
        Person.total = total;
    }
    public Person (){//构造器,实际上也可以看成非静态方法
        total++;//正确,非静态方法可以使用静态变量
        id = total;//正确,非静态方法可以使用非静态变量
    }
}
public class Test{
    public static void main(String[] args){
        Person.setTotal(3);
        new Person();
    }
}

小结

静态方法,只能访问静态成员

非静态方法,可以访问所有成员

上一篇:4. 寻找两个正序数组的中位数(利用二分查找找出两个有序数组第k小的元素)


下一篇:循环队列java