扫码关注官方订阅号
如题,另外java静态成员工作机制是什么
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
见这里
简单回答:不是。 想想 main 函数,在本类没有实例化时,只能访问本类中静态的那些变量,但是可以实例化本类或其他类来访问它们的非静态变量。
题主需要了解下Java的内存模型
静态函数只能访问静态变量,但在静态成员函数中可以声明它自身的变量,它也是一个函数也具有其它函数的特性!
静态函数只能访问静态变量,静态变量和对象 都是存储在堆,且线程共享的
准确地讲,是能访问本类中的静态成员变量和静态方法,为什么呢?因为静态方法在类加载的时候就已经分配内存创建了(注意,是类加载而非类实例化),此时的类实例尚未被创建,怎么会有类实例的变量可供访问的,所以静态方法里就不能访问this或super,就是这个道理
类加载
类实例化
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
见这里
简单回答:不是。
想想 main 函数,在本类没有实例化时,只能访问本类中静态的那些变量,但是可以实例化本类或其他类来访问它们的非静态变量。
题主需要了解下Java的内存模型
静态函数只能访问静态变量,但在静态成员函数中可以声明它自身的变量,它也是一个函数也具有其它函数的特性!
静态函数只能访问静态变量,静态变量和对象 都是存储在堆,且线程共享的
准确地讲,是能访问本类中的静态成员变量和静态方法,为什么呢?因为静态方法在类加载的时候就已经分配内存创建了(注意,是
类加载
而非类实例化
),此时的类实例尚未被创建,怎么会有类实例的变量可供访问的,所以静态方法里就不能访问this或super,就是这个道理