• Java关于实例对象调用静态变量和静态方法问题


    直接去看原文

    原文链接:Java关于实例对象调用静态变量和静态方法问题_java对象可以调用static方法吗_骑个小蜗牛的博客-CSDN博客

    ---------------------------------------------------------------------------------------------------------------------------------

    实例对象到底能不能调用静态变量静态方法

    网上众说纷纭,本文主要总结分析一下。

    情况一:实例对象可以调实例变量和实例方法吗

    答:实例变量和实例方法是属于对象的,对象当然可以正式调用

    情况二:实例对象可以调静态变量和静态方法吗

    答:

    1. 实例对象支持调用静态变量和静态方法,但并不推荐这么用;
    2. 通过实例对象支持调用静态变量和静态方法,最终都会在编译后转换为类直接调用静态变量或静态方法。

    下面是解释:

    如果单从使用来说,Java是支持实例对象调用静态变量和静态方法的。

    那就有人要说了,明明不可以呀,你看我使用IDEA通过实例对象调用静态变量和静态方法时,idea都不支持。

    这里通过示例来说明:

    测试类TestConst

    1. public class TestConst {
    2. public static Integer a = 1;
    3. public static void haha() {
    4. System.out.println("haha");
    5. }
    6. }

    当你想通过实例对象调用静态变量和静态方法时,发现自动提示没有?
    在这里插入图片描述

    确实是的,但这就说明不支持实例对象调用静态变量和静态方法了吗,其实并不是的。

    只是因为IDEA也不推荐你通过实例对象调用静态变量和静态方法,所以它的自动补全提示没有这个用法而已,但是你是可以手写调用的。
    在这里插入图片描述

    执行结果:

    1. 1
    2. haha

    显然IDEA是支持实例对象调用静态变量和静态方法的,只是它不建议你这么用。

    在阿里巴巴Java开发规范中就有这么一条:

    强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。

    通过编译后的class文件可以发现
    在这里插入图片描述
    原来,实例对象调用静态变量和静态方法的写法,在编译后转换为了类直接调用静态变量或静态方法。

    情况三:类可以调静态变量和静态方法吗

    答:当然是可以的,静态变量和静态方法本来就是属于类的. 但是这个过程不会去产生此类的实例对象.

    情况四:类可以调实例变量和实例方法吗

    答:不可以,idea都不让你书写.直接给你报编译错误.

    ​​​​​​​

  • 相关阅读:
    计算机网络 ——TCP/IP 基础
    NLP_文本特征处理_4(代码示例)
    QT获取计算机硬件信息
    高德POI搜索:地点关键词搜索
    能源区块链实验室同俄罗斯碳基金签署重要战略合作协议
    C- strtok() & strtok_r()
    浅谈系统安全测试
    java----js常用的api
    90%测试工程师都会的用例设计步骤,麻麻再也不用担心我写用例了
    会员权益营销中,等级会员的五种权益设置
  • 原文地址:https://blog.csdn.net/weixin_70280523/article/details/134072381