(简单说:静态方法和对象没有关系,不能使用对象的成员和方法),而对象可以访问静态的成员(最好用类名
    访问,用对象访问有点不规范) 因为静态成员是共享的,可以被所有的地方访问,而实例成员不是共享的,只能对象访问
    image.png
    实例方法可以直接访问实例成员:可以理解实例方法都是属于对象的,实例成员也是属于对象的,属于实例方法可以直接访问实例成员

    静态方法中不可以出现this关键字:因为this关键字表示当前对象的地址,静态方法不能出现和对象相关的,属于类 (实例方法中可以出现this,因为实例方法和成员都属于对象)

    1. package com.itheima.d1_static;
    2. public class Test3 {
    3. /**
    4. * 静态成员
    5. */
    6. public static int onlineNumber = 10;
    7. public static void test2(){
    8. System.out.println("========test2==========");
    9. }
    10. /**
    11. * 实例成员
    12. */
    13. private String name; // 静态方法不能直接访问实例成员
    14. public void run(){ // 这是一个实例方法,对象访问,
    15. System.out.println(name + "跑得快");
    16. }
    17. // 1.静态方法只能访问静态成员,不能“直接”访问实例成员。 可以new一个对象访问实例成员
    18. public static void test(){
    19. System.out.println(Test3.onlineNumber);
    20. System.out.println(onlineNumber); // 静态成员在本类中直接访问
    21. test2(); // test2()是静态方法,静态方法中可以调用静态方法 (简单说:静态方法和对象没有关系,不能使用对象的成员和方法)
    22. // System.out.println(name); 报错,静态方法不能访问实例成员
    23. }
    24. // 2.实例方法可以访问静态成员,也可以访问实例成员
    25. public void go(){
    26. System.out.println(Test3.onlineNumber);
    27. System.out.println(onlineNumber); // 实例方法访问静态成员
    28. // 实例方法可以直接访问实例成员:可以理解实例方法都是属于对象的,实例成员也是属于对象的,属于实例方法可以直接访问实例成员
    29. test2(); // 实例方法访问静态方法
    30. test(); // 实例方法访问静态方法
    31. run(); // 实例方法访问 实例方法 同一个对象,都可以访问
    32. // 实例方法中可以出现this,属于对象
    33. System.out.println(this); // 打印当前对象的地址 com.itheima.d1_static.Test3@41629346
    34. }
    35. // 3.静态方法中不可以出现this关键字
    36. public static void test3(){
    37. // System.out.println(this); // 因为this关键字表示当前对象的地址,静态方法不能出现和对象相关的,属于类
    38. }
    39. public static void main(String[] args) {
    40. // 目标: 理解static 访问相关的语法:面试笔试题,或者以后理解程序很重要的知识(扩展).
    41. Test3 t = new Test3();
    42. t.go();
    43. }
    44. }