转自:http://www.2cto.com/kf/201009/74383.html
在语法定义上的区别:静态变量前要加static
关
键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变
量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对
象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个
实例对象,永远都只分配了一个
staticVar
变量,并且每创建一个实例对象,这个staticVar
就会加1
;但是,每创建一个实例对象,就会分配一个instanceVar
,即可能分配多个instanceVar
,并且每个instanceVar
的值都只自加了1
次
。
public class VariantTest
{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest()
{
staticVar ;
instanceVar ;
System.out.println("staticVar = " staticVar ",
instanceVar = " instanceVar);
}
}
文二:
java类的成员变量有俩种:
一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为实例变量
类的静态变量在内存中只有一个,java
虚拟机
在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名
进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
public class Temp {
int t; //实例变量
public static void main(String args[]){
int t=1; //局部变量
System.out.println(t
);
//打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t
);
//通过实例访问实例变量
}
}
结果为:
1
0 (成员变量具有缺省值
而局部变量则没有
)
把代码改为
public class Temp {
static int t; //类变量
public static void main(String args[]){
System.out.println(t
);
//打印类变量
int t=1; //局部变量
System.out.println(t
);
//打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t
);
//通过实例访问实例变量
}
}
结果则为
0
1
0
分享到:
相关推荐
本篇文章介绍了,java中静态变量和实例变量的区别。需要的朋友参考下
计算机后端-Java-Java核心基础-第15章 面向对象07 06. 静态变量与实例变量的对比.avi
java变量Java中静态和实例变量的例子在这个项目中,您可以看到静态变量和实例变量是如何工作和实现的。 静态变量:属于类,所以将值保存在类中而不是对象中。 实例变量:属于对象,所以根据你设置的值在每个对象中会...
静态变量的导入以及集合的运用,以及综合实例。
类变量是类中的静态变量,是用static修饰的变量;实例变量就是类中的成员变量,没有用static修饰的。 类变量是所有对象公用的,实例变量是对象私有的;当一个对象将类变量进行修改后,这个类的其他所有对象访问这个类...
public static String p_StaticField = "父类--静态变量"; // 变量 public String p_Field = "父类--变量"; // 静态初始化块 static { System.out.println(p_StaticField); System.out.println("父类...
可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。 静态变量有两种情况: ● 静态变量是基本数据类型,这种情况下在类的外部不必创建该类的实例可以直接使用 ● 静态变量...
java 使用静态成员变量计算内存中实例化的对象数目
Java中的变量的详细介绍 。介绍成员变量和局部变量的区别。成员变量中的实例变量和静态变量的区变。
Java中静态(static)变量、方法与实例变量、方法的规范-附件资源
另外静态方法不能覆盖父类的实例方法,而静态变量却可以隐藏父类的一个同名实例变量,同样,实例方法不能覆盖父类的同名静态方法,而变量却可以隐藏父类的同名变量成员,不论父类的这个变量成员是类变量或者是实例...
这里的静态变量是借用Java中静态变量的概念(不知道Python中的具体概念是什么),指既可以通过类名直接进行访问,也可以通过类的实例进行访问的变量。这种变量的声明很简单,直接在类代码块中设置变量即可,不需要...
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也是说,它不...
主要介绍了Java static(静态变量)和私有化功能与用法,结合具体实例形式分析了Java static(静态变量)和私有化的相关概念、原理、使用方法及操作注意事项,需要的朋友可以参考下
父类的静态变量和静态代码块,按代码先后顺序执行 2. 子类的静态变量和静态代码块,按代码先后顺序执行 3. 父类的成员变量和普通代码块,按代码先后顺序执行 4. 父类的构造方法 5. 子类的成员变量和普通代码块...
4、Java中的静态变量和实例变量有什么区别? 5、Java中的重载和重写有什么区别? 6、Java中的抽象类和接口有什么区别? 7、Java中的线程是什么? 8、Java中的synchronized关键字有什么作用? 9、Java中的异常是什么...
读者将学习静态成员变量和静态方法的定义和使用方式,并了解它们与实例成员变量和实例方法的区别。此外,还将探讨静态代码块和静态内部类的概念及其使用场景。 能学到什么: 理解Java中static关键字的含义和作用。...
下面小编就为大家带来一篇利用反射获取Java类中的静态变量名及变量值的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JAVA类的方法调用和变量 一、类的分类: 1、普通类 2、抽象类(含有抽象方法的类) 3、静态类(不需要实例化,就可以使用的类) 二、方法的分类: 1、私有方法(只有类的内部才可以访问的方法) 2、保护方法(只有...
1 静态变量,静态代码块(类加载时执行,类不加载不执行) 2 实例变量,实例代码块(创建对象时才执行,不创建对象不执行) 3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private...