【Java笔记】——在实例方法与静态方法中 调用其他实例/静态方法 或者 访问实例变量/静态变量的语法格式及操作原则

在学了this关键字的作用原理以及使用方法之后,用以下例子来验证一下在java方法调用过程中this关键字在背后所起的作用。

public class ThisFinalTest04 {
    //没有static的变量
    int i = 10;
    //带有static的变量
    static int j = 20;

    //带有static的方法
    public static void doSome(){
        System.out.println("do some!");
    }
    //不带static的方法
    public void doOther(){
        System.out.println("do other!");
    }

    //带有static的方法
    public static void method1(){
        System.out.println("----------------调用doSome方法——在静态方法中调用另一个静态方法---------------");
        System.out.print("完整方式调用——类名.方法名(): ");
        ThisFinalTest04.doSome();
        System.out.print("省略方式调用——方法名(): ");
        doSome();

        System.out.println("----------------调用doOther方法——在静态方法中调用实例方法-------------------");
        System.out.print("完整方式调用——引用.方法名(): ");
        ThisFinalTest04 t1 = new ThisFinalTest04();
        t1.doOther();
        System.out.println("省略方式调用——方法名(): //编译错误:无法从静态上下文中引用非静态 方法 doOther()");
        // doOther(); //编译错误:无法从静态上下文中引用非静态 方法 doOther()

        System.out.println("---------------------访问i——在静态方法中访问实例变量---------------------");
        System.out.print("完整方式访问——先创建对象再通过 引用.实例变量名: ");
        ThisFinalTest04 t2 = new ThisFinalTest04();
        System.out.println(t2.i);
        System.out.println("省略方式访问——实例将变量名: 编译错误:无法从静态上下文中引用非静态 变量 i");
        // System.out.println(i); //编译错误:无法从静态上下文中引用非静态 变量 i

        System.out.println("---------------------访问j——在静态方法中访问静态变量---------------------");
        System.out.print("完整方式访问——类名.静态变量名: ");
        System.out.println(ThisFinalTest04.j);
        System.out.print("省略方式访问——静态变量名: ");
        System.out.println(j);

        System.out.println("===============================================================");
    }



    //不带static的方法——实例方法
    public void method2(){
        System.out.println("----------------------调用doSome方法——在实例方法中调用静态方法----------------------");
        System.out.print("完整方式调用——类名.静态方法名(): ");
        ThisFinalTest04.doSome();
        System.out.print("省略方式调用——静态方法名(): ");
        doSome();

        System.out.println("------------------调用doOther方法——在实例方法中调用另一个实例方法-------------------");
        System.out.print("完整方式调用——引用.实例方法名(): ");
        this.doOther();  //method2方法在执行的时候就已经有了一个对象了,而该对象中已经有了该类中所有的实例方法
        System.out.print("省略方式调用——实例方法名(): ");
        doOther();

        System.out.println("----------------------------访问i——在实例方法中访问实例变量i------------------------");
        System.out.print("完整方式访问——引用.实例变量名: ");
        System.out.println(this.i);
        System.out.print("省略方式访问——实例变量名: ");
        System.out.println(i);

        System.out.println("----------------------------访问j——在实例方法中访问静态变量j------------------------");
        System.out.print("完整方式访问——引用.静态变量名: ");
        System.out.println(this.j);
        System.out.print("省略方式访问——静态变量名: ");
        System.out.println(j);
    }


    public static void main(String[] args) {

        method1();

        ThisFinalTest04 t = new ThisFinalTest04();
        t.method2();

    }
}

运行结果:

----------------调用doSome方法——在静态方法中调用另一个静态方法---------------
完整方式调用——类名.方法名(): do some!
省略方式调用——方法名(): do some!
----------------调用doOther方法——在静态方法中调用实例方法-------------------
完整方式调用——引用.方法名(): do other!
省略方式调用——方法名(): //编译错误:无法从静态上下文中引用非静态 方法 doOther()
---------------------访问i——在静态方法中访问实例变量---------------------
完整方式访问——先创建对象再通过 引用.实例变量名: 10
省略方式访问——实例将变量名: 编译错误:无法从静态上下文中引用非静态 变量 i
---------------------访问j——在静态方法中访问静态变量---------------------
完整方式访问——类名.静态变量名: 20
省略方式访问——静态变量名: 20
===============================================================
----------------------调用doSome方法——在实例方法中调用静态方法----------------------
完整方式调用——类名.静态方法名(): do some!
省略方式调用——静态方法名(): do some!
------------------调用doOther方法——在实例方法中调用另一个实例方法-------------------
完整方式调用——引用.实例方法名(): do other!
省略方式调用——实例方法名(): do other!
----------------------------访问i——在实例方法中访问实例变量i------------------------
完整方式访问——引用.实例变量名: 10
省略方式访问——实例变量名: 10
----------------------------访问j——在实例方法中访问静态变量j------------------------
完整方式访问——引用.静态变量名: 20
省略方式访问——静态变量名: 20

Process finished with exit code 0

将以上案例中的结论总结为如下的思维导图:
1. 在静态方法中调用时,必须

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值