局部变量,实例变量,成员变量,静态变量是不是傻傻分不清, 之前我也是,现在用一篇文章来捋捋
java变量就三种,实例,静态,局部.其中实例变量又称为 成员变量,实例方法有称为 成员方法
public class Test{
int a; //实例变量
static int b; // 静态变量
public static void main(String[] args){
int c; //局部变量
}
}
实例变量(成员变量)
类中方法外(包括main方法),为实例变量.
实例变量 又称 成员变量
例如: Test类中的变量a就是实例变量
补充一下:类和对象的知识,方便理解实例变量
第一点:
类是抽象的概念,是一个被提取出来的模板
对象是往模板套的. 是实际存在的.通过模板实例化对象.
实例变量,就是实例化这个对象的属性
第二点:
由上,因为 类 = 属性 +方法 (这个是定义)
所以,被实例化的属性称为实例变量,
同理可得, 被实例化的方法称为实例方法
静态变量
被static修饰的变量就是静态变量.
例如: Test类中的变量b就是静态变量
static补充知识,如下
/**
* static关键字:
* 1. static翻译为静态的
* 2. static修饰的变量:静态变量
* 3. static修饰的方法:静态方法
* 4. 所有static修饰的,访问的时候,直接采用“类名.”,不需要new对象。
* 5. 什么情况下把成员变量定义为静态成员变量?
* 当一个属性是对象级别的,这个属性通常定义为实例变量。(实例变量是一个对象一份。100个对象就应该有100个空间)
* 当一个属性是类级别的(所有对象都有这个属性,并且这个属性的值是一样的),建议将其定义为静态变量,在内存空间上只有一份。节省内存开销。
* 这种类级别的属性,不需要new对象,直接通过类名访问。
* 6. 静态变量存储在哪里?静态变量在什么时候初始化?(什么时候开辟空间)
* JDK8之后:静态变量存储在堆内存当中。
* 类加载时初始化。
*/
补充:静态代码块知识,如下
/**
* static关键字还可以定义静态代码块:
*
* 1.语法格式:
* static {
*
* }
*
* 2. 静态代码块什么时候执行?执行几次?
* 静态代码块在类加载时执行,并且只执行一次。
*
* 3. 静态代码块可以编写多个,并且遵循自上而下的顺序依次执行。
*
* 4. 静态代码块什么时候使用?
* 本质上,静态代码块就是为程序员预留的一个特殊的时间点:类加载时刻
* 如果你需要再类加载时刻执行一段程序的话,这段代码就可以写到静态代码块当中。
* 例如,有这样一个需求:请在类加载时,记录日志。那么记录日志的代码就可以编写到静态代码块当中。
*/
局部变量
在类中方法里,(包括main方法) , 都称为局部变量.
例如: Test类中的变量c就是局部变量
这个没啥好补充滴~~~