类变量、成员变量、实例变量、局部变量、静态变量、全局变量的解释
2017-03-17 10:23
661 查看
转载https://www.douban.com/note/513499371/
1、之间的关系:
全局变量是成员变量的俗称;类变量就是被关键字static修饰的变量,也称静态变 量;java类的成员变量(全局变量)包含两种:一种是被static关键字修饰的变量,叫做类变量或者静态变量,另一种没有被static修饰,叫做实例变量。
2、局部变量和成员变量:
前者没有默认初始化值,要使用必须先声明并赋值;后者有默认初始化值,声明后可以直接使用。
3、内存中的位置及生命周期:
1)类的静态变量在内存中只有一份,在类被加载时为静态变量分配内存,静态位于方法区中,被该类的所有实例共享,静态变量可以通过类名直接访问,其生命周期取决于类的生命周期。某些时候,为了节省内存,共享资源,可以将类中的变量声明为静态变量,但是,静态变量的声明周期太长了,不容易被系统回收。使用不当反而会造成内存的浪费。
2)实例变量取决于类的实例。每创建一次实例,java虚拟机为实例变量分配一次内存,实例变量和对象一样都位于堆区中,其生命周期取决于实例的声明周期。
3)局部变量声明在方法或者代码块(如:for循环)里,执行到它时直接在栈中开辟空间并使用,执行完后直接释放内存,速度很快。
总结:局部变量位于栈区,静态变量位于方法区,实例变量位于堆区,对象位于堆区,对象的引用位于栈区。
4、静态变量和实例变量的区别:
1)语法定义上的区别:静态变量被关键字static修饰。实例变量不被static修饰。
2)程序运行时的区别:实例变量属于某个对象的属性,必须创建了对象,实例变量才会被分配空间,而静态变量属于类,类加载时就会被就会被分配空间。
3)使用途径:实例变量由类实例化后的对象调用。静态变量由类名直接调用。
1、之间的关系:
全局变量是成员变量的俗称;类变量就是被关键字static修饰的变量,也称静态变 量;java类的成员变量(全局变量)包含两种:一种是被static关键字修饰的变量,叫做类变量或者静态变量,另一种没有被static修饰,叫做实例变量。
2、局部变量和成员变量:
前者没有默认初始化值,要使用必须先声明并赋值;后者有默认初始化值,声明后可以直接使用。
3、内存中的位置及生命周期:
1)类的静态变量在内存中只有一份,在类被加载时为静态变量分配内存,静态位于方法区中,被该类的所有实例共享,静态变量可以通过类名直接访问,其生命周期取决于类的生命周期。某些时候,为了节省内存,共享资源,可以将类中的变量声明为静态变量,但是,静态变量的声明周期太长了,不容易被系统回收。使用不当反而会造成内存的浪费。
2)实例变量取决于类的实例。每创建一次实例,java虚拟机为实例变量分配一次内存,实例变量和对象一样都位于堆区中,其生命周期取决于实例的声明周期。
3)局部变量声明在方法或者代码块(如:for循环)里,执行到它时直接在栈中开辟空间并使用,执行完后直接释放内存,速度很快。
总结:局部变量位于栈区,静态变量位于方法区,实例变量位于堆区,对象位于堆区,对象的引用位于栈区。
4、静态变量和实例变量的区别:
1)语法定义上的区别:静态变量被关键字static修饰。实例变量不被static修饰。
2)程序运行时的区别:实例变量属于某个对象的属性,必须创建了对象,实例变量才会被分配空间,而静态变量属于类,类加载时就会被就会被分配空间。
3)使用途径:实例变量由类实例化后的对象调用。静态变量由类名直接调用。
相关文章推荐
- 内存管理:类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的解释。
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量 的区别
- 成员变量、全局变量、实例变量、类变量、静态变量和局部变量的区别
- 牛客网Java刷题知识点之全局变量(又称成员变量,分为类变量和实例变量)、局部变量、静态变量(又称为类变量)
- 类变量、成员变量、实例变量、局部变量、静态变量、全局变量的定义与区别
- 全局变量,局部变量,静态变量和实例变量的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- IOS之成员变量,属性变量,局部变量,实例变量,全局变量
- ios学习路线—静态变量,全局变量exterm,局部变量,实例变量
- iOS 成员变量,属性变量,局部变量,实例变量,全局变量 详解
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- java 中的 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块 执行时机
- IOS 成员变量,属性变量,局部变量,实例变量,全局变量 详解
- java 中的 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块 执行时机