java中类变量和实例变量的实质区别?

如题所述

每次创建一个类的对象的时候,系统为它创建了类的每一个实例变量的副本。我们就可以从对象中访问该实例变量。
类变量或说静态变量跟实例变量是不一样的,不管为一个类创建了多少个对象,系统只为每个类变量分配一次存储空间。系统为类变量分配的内存是在执行main方法时马克-to-win, 就是在程序最最开始的时候(见下面StaticDemo的例子)。所有的对象共享了类变量。可以通过对象或者通过类本身来访问类变量。
Static fields
A field define as static, means there is only one such field shared by all objects
Instance fields
A field define without static, means each object has its own copy of fields

顺便提一句:通常用下面的形式,定义类的常量。(类或实例都可以访问)
static final double PI=3.14159;
静态方法(方法前冠以static)和实例方法(前面未冠以static)的区别

调用静态方法或说类方法时,可以使用类名做前缀,也可以使用某一个具体的对象名;通常使用类名。
非static的方法是属于某个对象的方法,而static的方法是属于整个类的,不被任何一个对象单独拥有;
由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,也即,static方法只能处理static域或静态方法。实例方法可以访问实例域, 静态域或静态方法, 记住都行。
声明为static的方法有以下几条限制: 1.它们仅能调用其他的static方法。
2.它们只能访问static数据。
3.它们不能以任何方式引用this或super(关键 字super与继承有关,在下一章中描述)。
static method Have No this Reference
All instance methods have a hidden parameter—this
So,
Static
method can’t access instance methods and fields; it can only invoke
other static class members.It can access class members only.
instance can use static method.
Instance methods:
If a method is declared without the static modifier keyword,
that method is known as an instance method. Instance methods
are associated with objects – not classes.
It can access either instance or class members.

class StaticExa {
static int a = 4;
static int b = 9;
static void call() {
System.out.println("a = " + a);//静态方法可以访问静态属性
}
}
public class Test {
static int c = 43;
public static void main(String args[]) {
/*刚运行到这一步时,debug观察,StaticExa.a的值就等于42,Test.c的值就等于43,
说明系统在我们的程序一开始时,就会给所有的类变量赋值。如果是对象参考, 就是null,
见photoshop的例子*/
System.out.println("开始观察StaticExa.a和Test.c");
。。。。。。。。。。。。。。。。详情网上找“马克-to-win”,参考他的网站或他的百度空间:java第2章的内容
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-13
类变量(即静态变量)是全局变量,所有的实例共享的变量。如果你在一个实例中改变了其值,那么所有的实例的这个变量的都会改变

java中类变量和实例变量的实质区别?
类变量或说静态变量跟实例变量是不一样的,不管为一个类创建了多少个对象,系统只为每个类变量分配一次存储空间。系统为类变量分配的内存是在执行main方法时马克-to-win, 就是在程序最最开始的时候(见下面StaticDemo的例子)。所有的对象共享了类变量。可以通过对象或者通过类本身来访问类变量。Static ...

实例变量与类变量的区别
两变量的区别:类变量也叫静态变量,也就是在变量前加了static 的变量; 实例变量也叫对象变量,即没加static 的变量;类变量是所有对象共有的,其中一个对象的值改变,其它对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;1、实例变量:定义在类中但在...

(Java)比较实例变量与类变量有什么不同?解释变量的含义?
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。类变量则是用static声明,系统为每个类变量分配一次存储空...

java中什么是实例变量,类变量,局部变量??
每个实例都将有实例变量的一个拷贝,它们可以修改实例变量的值,而不会影响其他的实例;而类变量只有一个拷贝,修改它的值将影响所有的实例。只在特定的过程或函数中可以访问的变量,被称为局部变量。与局部变量相对应的,是全局变量。全局变量就是从定义的位置起,作用域覆盖整个程序范围的变量。局部变量...

JAVA举例说明类变量、实例变量、类方法、实例方法在声明和使用时的区别...
实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。例如一个银行帐户(Account)是一个class的话,可以把他的利息设为类变量(static float interest),而持有人是...

java中,类的对象,对象的实例,对象的引用,三者如何进行区分,有何区别...
首先,没有“对象的实例”这一说法,只有类的实例,而类的实例,只的就是类的对象,简称 对象。而类的引用,你可以通俗一点来理解,就是类对象的变量名,因为一个类的对象的变量名,其实是只的一段内存位置。故而,类的对象,就是类的实例,也就是我们通常说的对象。而类的引用,则是指该类实例...

什么是实例变量?
java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种没有static修饰,为实例变量。在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能...

java中静态变量和实例变量的区别?
静态变量与实例变量的主要区别在于它们的内存分配、访问方式以及在类中的共享性质。静态变量属于类,可以在类的任意方法中访问,也可以在其他类中通过类名直接访问。实例变量则属于实例对象,每个对象有自己的内存空间,只能在实例对象的方法中访问。在实际编程中,定义静态属性和常量时,我们通常通过类名....

JAVA中成员变量,局部变量,实例变量,类变量,有什么关系,,?
java易混淆概念之类变量、实例变量、局部变量 类变量、实例变量、局部变量类变量是类中独立于方法之外的变量,用static 修饰。实例变量也是类中独立于方法之外的变量,不过没有static修饰。局部变量是类的方法中的变量。看下面的伪代码说明:public class Variable{ static int allClicks=0; \/\/类变量 Stri...

实体变量?
也就是在变量前加了static 的变量;实例(体)变量也叫对象变量,即没加static 的变量;那么他们的区别究竟是什么呢?类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象 ...

相似回答