Java学习笔记——类变量和类方法

Posted Ashling LI

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记——类变量和类方法相关的知识,希望对你有一定的参考价值。

类变量

引入

要统计共有多少小孩加入了游戏,已有解法如下:

package staticDemo;

public class Child {

    private String name;

    public Child(String name) {
        this.name = name;
    }

    public void join(){
        System.out.println(name + "加入了游戏...");
    }

    public static void main(String[] args) {
        
        int count = 0;
        Child child1 = new Child("阿明");
        child1.join();
        count++;
        Child child2 = new Child("阿东");
        child2.join();
        count++;
        Child child3 = new Child("阿瓜");
        child3.join();
        count++;
        System.out.println(count + "人参加了游戏...");
    }
}

存在的问题:
在main()中设置了一个count变量来统计child数量,但是在Child类中却没有定义。
解决方法:
将count设置为static
p1和p2有共享空间

修改后的程序如下

package staticDemo;

public class Child {

    private String name;
    private static int count = 0;

    public Child(String name) {
        this.name = name;
    }

    public void join(){
        System.out.println(name + "加入了游戏...");
    }

    public static void main(String[] args) {

        int count = 0;
        Child child1 = new Child("阿明");
        child1.join();
        child1.count++;
        Child child2 = new Child("阿东");
        child2.join();
        child2.count++;
        Child child3 = new Child("阿瓜");
        child3.join();
        child3.count++;
        System.out.println(Child.count + "人参加了游戏...");
        System.out.println(child1.count);
        System.out.println(child2.count);
        System.out.println(child3.count);
    }
}

结果

阿明加入了游戏…
阿东加入了游戏…
阿瓜加入了游戏…
3人参加了游戏…
3
3
3

何时需要类变量

当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量)

类变量和实例变量的区别

类变量时该类的所有对象共享的,而实例变量时每个对象单独享有的。

static内存

  • 共享的空间是一个堆空间 ,被对象共享
  • static类变量,在类加载的时候就生成了,所以即使没有创建对象实例也可以访问

如何访问类变量

  • 对象名.类变量名
  • 类名. 类变量名
  • 类变量的访问,必须遵守相关的访问权限

类方法

如何调用类方法

  • 对象名.类方法
  • 类名.类方法
  • 类方法的访问,必须遵守相关的访问权限

什么时候调用类方法

当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率
比如:utils类,Math类,Arrays类,Collections类

注意事项

  • 类方法中不能使用this,super
  • 类方法中只能访问静态变量或静态方法
  • 普通方法,可以访问静态成员和非静态成员

main()方法

public static void main(String[] args)

  • main方法是虚拟机调用的
  • Java虚拟机在执行main()方法,所以该方法的访问权限必须是public
  • Java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static
  • String[] args,该方法接收的是String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数

    idea中设置运行的类的参数

以上是关于Java学习笔记——类变量和类方法的主要内容,如果未能解决你的问题,请参考以下文章

Java类和对象-学习笔记(超级详细~~~)

Swift学习笔记-对象和类

第三周 学习总结

深入类和对象

python学习笔记之面向对象中的静态方法类方法属性方法总结

代码笔记Java基础:Java的方法和类