A. java中静态变量和实例变量的区别
Java类的成员变量有2种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
B. Java中 引用变量,对象,实例变量 三者的区别。
A a = new A();
new A() 对象,A a 引用变量,a = new A()将对象地址给了引用变量。
实例变量也可以叫他全局变量,就是将变量放在类的方法之外的变量。
所以引用对象是用于存储对象地址的,实例变量描述的是变量位置。
C. java里类变量和实例变量的区别
每次创建一个类的对象的时候,系统为它创建了类的每一个实例变量的副本。我们就可以从对象中访问该实例变量。
类变量或说静态变量跟实例变量是不一样的,不管为一个类创建了多少个对象,系统只为每个类变量分配一次存储空间。系统为类变量分配的内存是在执行main方法时马克-to-win, 就是在程序最最开始的时候(见下面StaticDemo的例子)。所有的对象共享了类变量。可以通过对象或者通过类本身来访问类变量。
Staticfields
Afielddefineasstatic,
Instancefields
Afielddefinewithoutstatic,
顺便提一句:通常用下面的形式,定义类的常量。(类或实例都可以访问)
staticfinaldoublePI=3.14159;
静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别
调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名;通常使用类名。
非static的方法是属于某个对象的方法,而static的方法是属于整个类的,不被任何一个对象单独拥有;
由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,也即,static方法只能处理static域或静态方法。实例方法可以访问实例域, 静态域或静态方法, 记住都行。
声明为static的方法有以下几条限制: 1.它们仅能调用其他的static方法。
2.它们只能访问static数据。
3.它们不能以任何方式引用this或super(关键 字super与继承有关,在下一章中描述)。
—this
So,
Static
methodcan’;itcanonlyinvoke
otherstaticclassmembers.Itcanaccessclassmembersonly.
instancecanusestaticmethod.
Instancemethods:
,
.Instancemethods
areassociatedwithobjects–notclasses.
.
classStaticExa{
staticinta=4;
staticintb=9;
staticvoidcall(){
System.out.println("a="+a);//静态方法可以访问静态属性
}
}
publicclassTest{
staticintc=43;
publicstaticvoidmain(Stringargs[]){
/*刚运行到这一步时,debug观察,StaticExa.a的值就等于42,Test.c的值就等于43,
说明系统在我们的程序一开始时,就会给所有的类变量赋值。如果是对象参考,就是null,
见photoshop的例子*/
System.out.println("开始观察StaticExa.a和Test.c");
详情网上找“马克-to-win”,参考他的网站或他的网络空间:java第2章的内容
D. java中类变量和实例变量区别(数值的改变)
类变量(即静态变量)是全局变量,所有的实例(如你提到的a1、a2)共享的变量。如果你在一个实例中改变了其值,那么所有的实例的这个变量的都会改变,例如 a1.a=10,那么你打印a2.a的值时也是10。而实例变量是每个实例自己独有的变量,互不干扰。就像你上面提到的,如果a1.b=4,打印a2.b还是0,那就说明a2实例中的b还是默认赋值0,并没有赋值4.
E. java中的实例化和引用变量有什么区别
区别如下:
实例化就是另外分配一个空间来存储要实例化的类,引用变量没有另外创建一个空间,只是多了一个变量指向那个空间而已,比如,
String str1 = "aaaa"; //实例化一个变量str1,创建了一个空间来存放"aaaa".
String str2 = str1; //引用变量, 把str2也指向存放"aaaa"的那个空间。
这样就可以用str1或者str2对"aaaa"的内容进行改变,不过String 类型的内容不能改变,改变了内容只是 另外创建一个空间存放新的内容,然后把变量名指向新的空间而已。
F. 在Java程序设计中实例变量和类变量有什么区别
实例变量
是每个对象都有拥有的变量
类变量
是这一类的(即就是这个)拥有的变量啊
你的抽象一下
实例变量
你每new一个对象出来
这个对象里面就有这个变量
而类变量呢
就只有一个
G. Java里的静态变量很实例变量的区别是什么
静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。
实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。
H. Java中局部变量,静态变量和实例变量的区别
实例变量又称成员变量:
成员变量定义在类中,在整个类中都可以被访问
成员变量随着对象的建立而建立,随对象的消失而消失,存在于对象所在的对内存中
成员变量有默认初始值
局部变量:
定义在方法中或方法的参数列表(或者语句中)
存在于栈内存中,作用的范围结束,变量空间自动释放
默认没有初始化值,使用时需要进行初始化
静态变量又称类变量:用static修饰
存储在方法区中
随着类的加载而存在,随着类的消失而消失
可以由类名或对象调用
伪代码说明
publicclassVariable{
staticinta=0;//类变量
Stringb="helloworld";//实例变量
publicvoidmethod(){
intc=0;//局部变量
}
}
I. java中类变量、实例变量和局部变量有何区别
类变量:
比较特殊的实例变量,用static修饰的,一个类共用这个变量,所有由这类生成的对象都共用这个变量,类装载时就分配存储空间。一个对象修改了变量,则所以对象中这个变量的值都会发生改变。
实例变量:
从属于类,由类生成对象时,才分配存储空间,各对象间的实例变量互不干扰,能通过对象的引用来访问实例变量。
局部变量:
方法中或者某局部块中声明定义的变量或方法的参数被称为局部变量
J. java中静态变量和实例变量到底有什么区别_看了就知道啦
静态变量不属于某 9 * 个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码, 10 * 不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。 11 * 总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以 12 * 直接使用类名来引用。例如,对于下面的程序,无论创建多少个实例对象, 13 * 永远都只分配了一个staticInt变量,并且每创建一个实例对象, 14 * 这个staticInt就会加1;但是,每创建一个实例对象,就会分配一个random, 15 * 即可能分配多个random,并且每个random的值都只自加了1次。 16 * 17 * @author hongten 18 * @date 2013-3-2 19*/20publicclass StaticTest { 2122privatestaticint staticInt = 2; 23privateint random = 2; 2425public StaticTest() { 26 staticInt++; 27 random++; 28 System.out.println("staticInt = "+staticInt+" random = "+random); 29 } 3031publicstaticvoid main(String[] args) { 32 StaticTest test = new StaticTest(); 33 StaticTest test2 = new StaticTest(); 34 } 35 }