类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
类体由2部分构成:
一部分是变量的定义;
一部分是方法的定义(一个类中可以有多个方法)
在变量定义部分定义的变量叫做类的成员变量,成员变量在整个类中都有效.
(全局变量应该是成员变量的俗称)
在方法体中定义的变量叫做局部变量,局部变量只在定义它的方法中有效.
成员变量又分为
实例变量
和
类变量(static静态变量).
class One
{
float x; //x为实例变量
static int y; //只要有关键字static, y为类变量
}
局部变量是在函数或方法中的变量,实例变量指的是类的一个实例,就是一个对象, 成员变量就是类中的变量(不是方法中的变量!), 类变量是类中的静态变量。
局部、实例、成员变量的作用域和生存周期同局部变量一样,而类变量如果用public声明则作用域同全局变量,如果是private则作用域只在类的内部,
生存周期同全局变量.
成员方法和类方法跟局部变量和类变量的关系一样.
1.栈 - 由编译器自动分配释放 java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量; 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
结果为: 把代码改为
结果则为
|
ava优化编程-静态变量
静态变量
在程序运行期间,类中的静态变量其内存空间对所有该类的实例是共享的,因此在某些时候,为了节省内存空间开销,共享资源,
我们可以将类中的变量声明为静态变量。
但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。
因此建议在全部符合下列条件的情况下才使用静态变量:
(1)变量所包含的对象体积较大,占用内存较多
(2)变量所包含的对象生命周期较长
(3)变量所包含的对象数据稳定
(4)该类的实例 有 对该变量包含对象的共享需求
关键字: java 变量 作用域
1. 类的静态变量在内存中只有一个。静态变量位于方法区,被类的所有实例共享。静态变量的生命周期取决于类的生命周期(即类何时被加载和卸载)。
2. 类的每个实例都有相应的实例变量。实例变量位于堆区中。实例变量的生命周期取决于实例的生命周期(即实例何时被创建及销毁)。
3. 假如成员变量(包括静态变量和实例变量)是引用变量,那么当该成员变量结束生命周期时,并不意味着它所引用的对象也一定结束生命周期。变量的生命周期
和对象的生命周期是两个不同的概念。
4. 局部变量位于栈区,其生命周期取决于所属的方法何时被调用及结束调用。
总结一下:
局部变量位于栈区,静态变量位于方法区,实例变量位于堆区,方法的字节码位于方法区,对象本身位于堆区,对象的引用位于栈区。
类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。相关推荐
- java静态变量和实例变量的区别6_java静态变量的与实例变量的区别
下面的为代码实现 /** * */ package com.b510.test; /** * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象, * 其中的实例变量才会被分配空间,才 ...
- java static变量何时初始化_Java 静态变量何时初始化?
小编典典 从请参阅Java静态变量方法: 它是一个属于类而不属于对象(实例)的变量 静态变量在执行开始时仅初始化一次.在初始化任何实例变量之前,将首先初始化这些变量 该类的所有实例共享一个副本 静态变 ...
- python中静态变量_Python中的静态变量和方法
python中静态变量 Defining static variable and method is a common programming concept and is widely used i ...
- VBA学习(一)启用VBA、变量、常量、静态变量、字符串拼接、循环语句与判断语句
目录索引 在Excel中启用VBA 变量的强制声明 静态变量 静态变量值消失的情况 常量 循环语句 FOR循环 Do While循环 Do Until循环 Do--Loop While循环 IF判断语 ...
- php 函数静态变量,php 函数中静态变量使用的问题实例分析
本文实例讲述了php 函数中静态变量使用的问题.分享给大家供大家参考,具体如下: function msg() { static $a = 0; echo $a++, ' '; } msg(); ms ...
- Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序...
实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态 ...
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- java静态代码块和静态变量_Java中的静态变量、静态方法与静态代码块
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程. 其中静态代码在类的初始化阶段被初始化.而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静态变 ...
- python局部静态变量_python如何设置静态变量
众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() { static int count = 0; count ++; } 在Python中无法自然实现这个功 ...
- python静态变量_python如何设置静态变量
众所周知,Python语言并不支持静态变量,比如下面这样一个应用场景: void foo() { static int count = 0; count ++; } 在Python中无法自然实现这个功 ...
最新文章
- Android源代码下载与编译 - 2019
- bootstraptable获取所有数据_一键获取oracle用户下所有表的表名与其数据量
- webpack4-- 处理html中引入的图片
- CCF NOI1123 A-B
- 医学影像后处理服务器系统的特点,【CT影像系统工作站怎么用】CT影像系统工作站好不好_使用技巧-ZOL软件百科...
- php字符串赋值给变量,JavaScript-如何将一个PHP字符串安全赋值给Javascript变量(包含引号和换行符的)...
- 前端学习(2556):vue插槽
- java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数
- linux下查看vnc端口_linux vnc的默认端口修改
- 供应链服务产业数据知多少
- 自动驾驶 6-2: 几何横向控制Lesson 2: Geometric Lateral Control - Pure Pursuit
- go产生平台相关的0xFFFF
- matlab linux命令行窗口,linux命令行运行matlab
- ubuntu MeshLab安装
- JAVA汉字转拼音工具类
- SMCJ6.0CA TVS二极管应用领域(瞬态抑制二极管)
- 利用photoshopcs6将gif格式图片变为背景透明
- 65个最常见的面试问题与技巧性答复(面试技巧和注意事项),很不错,求职之前,多看看
- 服务器审计资质证书,利用ACS服务器实现用户的认证、授权和审计
- 【知识点总结】电力电子技术——第一讲