1. 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区;类方法中无this的参数;普通方法中隐含着this的参数
    2. 类方法可以通过类名调用,也可以通过对象名调用。【规范写法是类名调用】
    3. 普通方法和对象有关,需要通过对象名调用,比如对象名.方法名(参数),不能通过类名调用。
    4. 类方法中不允许使用和对象有关的关键字,比如this和super。普通方法(成员方法)可以使用。
    5. 类方法(静态方法)中只能访问静态变量或静态方法。
    6. 普通成员方法,既可以访问非静态成员,也可以访问静态成员。

    小结:
    静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员(必须遵守访问权限)

    1. package test;
    2. public class Main {
    3. public static void main(String[] args) {
    4. D.hi();//ok
    5. //非静态方法,不能通过类名调用
    6. //D.say();//报错!!!需要先创建对象,再调用
    7. new D().say();//可以
    8. }
    9. }
    10. class D {
    11. private int n1 = 100;
    12. private static int n2 = 200;
    13. public void say() {//非静态方法,普通方法
    14. }
    15. public static void hi() {//静态方法,类方法
    16. //类方法中不允许使用和对象有关的关键字,比如this和super。
    17. //而普通方法(成员方法)可以使用。
    18. //System.out.println(this.n1);//报错!!!
    19. }
    20. //类方法(静态方法)中 只能访问 静态变量 或静态方法
    21. //口诀:静态方法只能访问静态成员.
    22. public static void hello() {
    23. System.out.println(n2);
    24. System.out.println(D.n2);
    25. //System.out.println(this.n2);//报错!!!
    26. hi();//OK
    27. //say();//报错!!!
    28. }
    29. //普通成员方法,既可以访问 非静态成员,也可以访问静态成员
    30. //小结: 非静态方法可以访问 静态成员和非静态成员
    31. public void ok() {
    32. //非静态成员
    33. System.out.println(n1);
    34. say();
    35. //静态成员
    36. System.out.println(n2);
    37. hello();
    38. }
    39. }