java 实例变量和类变量
当JAVA程序执行时,类的字节码文件就被加载到内存,如果该类没有创建对象,类的实例成员变量不会被分配内存,但是类中的类变量在类被加载到内存的时候,就分配了相应的内存空间。如果该类创建对象,那么不同的实例变量互不相同,即分配不同的内存空间,而类变量不再重新分配,所有的对象共享类变量,即所有的对象的类变量是相同的一处内存空间,类变量的内空空间至于什么时候释放内存空间,这是大家想知道的,那么我告诉大家,类变量的内存空间直到程序退出运行,才会释放所占有的内存。
其实说到这里,我们应该再随便说下类的方法,类的方法也分实例方法和类方法,那么有谁能告诉我实例方法和类方法有什么区别么?
是这样的,类的实例方法是在只有类创建对象的时候才会被分配入口地址,而类方法,是当程序的字节码文件加载到内存就马上分配入口地址,这就是为什么实例方法可以调用类方法,而类方法不能调用实例方法的原因,也是类方法为什么不可以操作实例变量而实例方法可以操作类变量的原因(想想谁的入口地址先分配)。那么有人会问,当我在创建一个对象的时候,实例方法和类方法是不是会被再次分配入口地址???java培训
其实不然,当你再创建一个对象时,实例方法是不会再分配入口地址的,也就是说,方法的入口地址是被所有对象共享的。类方法一开始就分配了入口地址,也不会再分配入口地址。讲到这里,也许有人还会问,那么方法的入口地址是什么时候才会被取消的呢?
是这样的,类方法是直到程序退出运行才会被取消入口地址,而实例方法就不一样了,实例方法是当所有对象都不存在的时候,入口地址才被取消。
转载于:https://www.cnblogs.com/javaitpx/archive/2012/11/28/2792288.html
java 实例变量和类变量相关推荐
- java实例变量,局部变量,类变量和final变量
题目 答案:B 解析 实例变量: 定义在类中的变量是类的成员变量,可以不进行初始化, java 会自动进行初始化.(如果是引用类默认初始化为 null, 如果是基本类型,默认初始化为 0 ) 局部变量 ...
- 阿里P8亲自讲解!java实例变量和类变量
前言 Spring如何解决的循环依赖,是近两年流行起来的一道Java面试题.其实笔者本人对这类框架源码题还是持一定的怀疑态度的.如果笔者作为面试官,可能会问一些诸如"如果注入的属性为null ...
- java实例变量成员变量_Java的类成员变量、实例变量、类变量,成员方法、实例方法、类方法...
总是被这些相似的概念搞晕,查阅了资料后做个小总结,以变量为例,方法辨析类似. 1.多胞胎名字汇总辨析 成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称, ...
- jni java共享变量_Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量
JNI访问 Java 实例变量和静态变量 Java 中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过类名.变量名来访问. ...
- Java实例变量初始化
原文地址:https://blog.csdn.net/cauchyweierstrass/article/details/48943077 题目是这样的:求下面程序的输出: public class ...
- java实例变量可以被覆盖吗_Java继承覆盖实例变量
参见英文答案 > Java Inheritance – instance variables overriding 3个 我 ...
- 实例变量和类变量、实例方法类方法区别
实例变量 实例变量声明在一个类中,但在方法.构造方法和语句块之外: 当一个对象被实例化之后,每个实例变量的值就跟着确定: 实例变量在对象创建的时候创建,在对象被销毁的时候销毁: 实例变量的值应该至少被 ...
- Python基础学习——面向对象编程(第一讲:面向对象概述、面向对象三个基本特征(封装性、继承性、多态性)、类和对象(定义类、创建和使用对象、实例变量、类变量、构造方法、实例方法、类方法、静态方法))
面向对象是Python最重要的特性,在Python中一切数据类型都是面向对象的. 1.面向对象概述 面向对象的编程思想是,按照真实世界客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建软件系 ...
- 实例变量和类变量、类方法和实例方法
类体中包括成员变量和局部变量,而成员变量又可以细分为实例变量和类变量,在声明成员变量的时候,用static给予修饰的称作类变量,否则称作实例变量.(类变量也称为static变量,静态变量) 那么,类变 ...
最新文章
- Microbiome:空间尺度对华北平原麦田土壤细菌群落的影响(南土所褚海燕组)
- 零基础是学java还是python-老男孩零基础学习|python和java那个更有发展前景?
- 高并发分布式系统中生成全局唯一(订单号)Id
- python监控服务器是否在线_python检测服务器是否正常
- python调用sqlplus执行_python可以调用sqlplus吗?
- android.os.NetworkOnMainThreadException 异常处理
- python实时监控redis队列_Python的Flask框架应用调用Redis队列数据
- 使用dex2jar反编译apk
- cam_lidar_calib激光雷达和相机联合标定
- 关于二叉树的前序、中序、后序三种遍历
- blas、lapack、atlas在Ubuntu上的安装
- Discarding record on action DISCARD on error 0
- FortiGate防火墙GRE隧道监控
- php三元运算符要多个赋值,php中三元运算符用法
- Android Froyo基于32 bit ubuntu 10.10编译问题
- python基本数_python--基本数据类型
- PCB这个工艺,免费了!
- 思科网络学院-网络互连-第四章
- java定义一个圆类_2.8.1 如何定义一个圆的类
- DG232RL与FT232RL/GP232RL区别开发
热门文章
- C语言: ---gdb查看内存和寄存器内容
- C++实现md5加密或计算文件的唯一性识别
- 《C++ Primer 5th》笔记(6 / 19):函数
- C++ Map简单介绍 ,比如添加元素、删除元素和打印元素
- 修改ubuntu的IP地址,静态IP地址
- C++ primer三章二节标准库类型string
- 软件开发的“三重门”
- FLV文件格式(Z)(转载)
- 优雅的找出ArrayList中重复的元素
- JeeSite 4.0 (1.0)开发环境部署运行