当前位置: 首页 > news >正文

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

直接去看原文

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

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

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

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

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

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

这里通过示例来说明:

测试类TestConst

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

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

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

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

执行结果:

1
haha

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

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

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

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

总结一下:

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

相关文章:

  • 【开源】基于SpringBoot的海南旅游景点推荐系统的设计和实现
  • 字符串中的assert和strcat
  • 方舟生存进化ARK个人服务器搭建教程保姆级
  • SpringBoot可以连接RabbitMQ集群吗 ?
  • 【机器学习】KNN算法-模型选择与调优
  • NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
  • redis集群中节点fail,noaddr
  • Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)
  • 使用Node.js软件包管理器(npm)安装TypeScript
  • 鸿蒙ArkUI-X跨端应用开发,一套代码构建多平台应用
  • 【鸿蒙软件开发】ArkTS基础组件之Gauge(环形图表)、LoadingProgress(动态加载)
  • C++模板类用作参数传递
  • SQL server 代理服务启动和查看
  • 单例模式详解【2023年最新】
  • 读高性能MySQL(第4版)笔记21_读后总结与感想兼导读
  • 放学辣[简单版]
  • 面向对象设计——原型模式
  • SpringAOP源码解析之advice执行顺序(三)
  • CentOS 安装 tomcat 并设置 开机自启动
  • 论文阅读——ELECTRA
  • Android开发知识学习——HTTP基础
  • 51单片机的hello world之点灯
  • Django 实战开发(一)项目搭建
  • Unity把余弦值转成弧度和角度
  • debian、ubuntu打包deb包工具,图形界面deb打包工具mkdeb
  • 微信小程序如何使用地球半径计算两组经纬度点之间的距离(自身位置与接口返回位置)【上】
  • postgis ST_ClipByBox2D用法
  • 【MyBatis Plus】深入探索 MyBatis Plus 的条件构造器,自定义 SQL语句,Service 接口的实现
  • 基于AI与物联网技术的智能视频监控系统架构剖析
  • mysql 基础知识