类成员变量和实例成员变量分别指什么有什么区别(举例说明)?

如题所述

例如定义一个类:

class Text

{public static int number;

public int temp;}

如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text  b = new Text();

b.temp;这就是实例成员变量。

而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变量。

主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。

扩展资料:

数据成员可以分静态变量、非静态变量两种.

静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用"类名.静态成员名"访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员 函数不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员函数可以直接访问类中静态的成员.

非静态成员:所有没有加Static的成员都是非静态成员,当类被 实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在 内存中..

一个类中也可以包含静态成员和非静态成员,类中也包括静态 构造函数和非静态构造函数..

分两个方面来总结,第一方面主要是相对于 面向过程而言,即在这方面不涉及到类,第二方面相对于 面向对象而言,主要说明 static在类中的作用。

参考资料:百度百科-成员变量

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-25

成员变量就是类里面的变量,不区分static

没有static的成员变量叫实例变量

加了static就叫类变量,实际上和类没啥关系,就相当于一个寄生物一样,而且除了类变量外,你喜欢叫全局变量(public 修饰)、静态变量都行

最后他俩统称类的成员变量

完善一下回答,举个栗子吧

class Test{
    
    public static String CLASS_VAR = "test";//类变量、静态变量、全局变量
    
    private String instance_var;//实例变量
    
    //省略instance_var get;set;方法
    
}

实际使用时,实例变量是存在于类的实例中的,实例就是通过类来创建的具体某个对象,这个对象会维护自身所有的实例变量,所以相同类的不同实例间去set同名实例变量是互不影响的。

也就是要访问instance_var,需要先new一个Test对象test,再通过test.getInstanceVar()或test.instance_var来访问实例变量。

而类变量则直接通过实际的类来进行访问,也就是要访问CLASS_VAR,直接使用TEST.CLASS_VAR即可,该变量存在静态区的某个固定位置(如果是静态对象,则对象存在堆区,静态区存的是指向该对象的地址),假设在多线程下同时访问该变量,获取的永远是同一份数据,比如一个静态的对象,多线程下获取到的永远都是指向同一个对象。

类变量的使用也就引申出了多线程下类变量的安全性问题,比如一个线程获取到该变量后,另一个线程修改了它,那么原来的线程拿到的是旧值,以此为基础所做的操作就很大概率会出现不正确的结果,也就引申出锁和同步,也就是说一个线程在操作这个公共资源时,会将该变量锁住,禁止其他线程拿到修改该变量的权限,当然拿修改权限这部分是需要我们手动去写的,代码是不会乖乖地自己识别哪个公共资源被锁的。

可能有没讲明白的地方,或是错漏,请大家指正,多谢

第2个回答  推荐于2017-09-12
例如定义一个类:
class Text
{
public static int number;
public int temp;
}
如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text b = new Text();
b.temp;这就是实例成员变量。
而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变量。
主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。追问

跟static修饰有关?

追答

对的。。。

本回答被提问者采纳
第3个回答  2011-10-20
实例成员变量:非静态成员变量
类成员变量:静态成员变量. 对于这个类的任何实例都是一样的值,不属于某个实例,所以叫类的成员变量追问

求给个程序例子说明

追答

=====

第4个回答  2012-03-15
……不在方法中定义的变量为成员变量。成员变量有两种,有static修饰的为静态成员变量,没有static的为实例变量

类成员变量和实例成员变量分别指什么有什么区别(举例说明)?
主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。

实例成员和类成员的区别
3、引用方式的差别: 实例成员变量对于对象,通过对象进行访问;类成员变量属于类,既可以通过对象,也可以通过类访问。

类变量和实例变量的区别是什么?
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了。类就像一份说明书,说明这种类的实例对象的规格。而在创建实例对象的时候,内存中...

什么是类变量,类方法,什么是实例变量,实例方法?
1.成员变量可以理解为所有在类的头上声明的,无论是@interface、@implementation下用大括号括起来或者是用@property声明的变量都可以称作这个类的成员变量,只是在@implementation下声明的变量是这个类的私有变量,外部是无法访问的,而在@interface下声明的变量可以设定为全局或者私有变量,而用@property声明的就...

以程序为例,讲解java中包,类,构造函数,成员变量,成员方法,重载,接口,SU...
1、认识成员变量(类或对象的状态)、类变量、实例变量、局部变量、方法参数之间的区别 成员变量(field)是没有定义在代码块(包括初始化块、成员方法)中的变量。成员变量是类变量还是实例变量取决于在其声明中是否使用了static关键字。类变量在声明是用了static关键字,它的另一个名字叫静态变量、静态...

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

<java>请各路大神帮忙分析一下我的理解对不对
1:成员变量:变量电议部分所定义的变量被称为累的成员变量。也就是说成员变量在整个类中都有效,类中的方法可以直接调用成员变量使用。然而成员变量又分为实例成员变量(简称实例变量)和类变量(简称静态变量)1.1:实例变量:就是我们正常定义的变量,比如int a; a就是实例变量 1.2:静态变量:...

java中类成员变量和成员方法的区别
类的成员变量分为:类变量(又称静态变量,被static修饰的变量)和实例变量(不被static修饰的变量),另外,定义在函数内部的变量称为局部变量,仅在函数内部有效。而成员方法分为:类方法(又称静态方法,被static修饰的方法)和实例方法(不被static修饰的方法)。例:class Demo{ static int a=0;\/...

类的"实例","成员变量","对象","构造函数","析构函数"分别是什么?
一般的说,”对象”,“实例” 就是一个类 实例化之后(new)的那个对象。成员变量 就是当前类中定义的变量,类型不同代表的意义就不同。比如,public int a =0;public double d = 0.5;构造函数 就是类中不带参数的“方法”,构造函数 的名字与类的名字一致。析构函数 https:\/\/msdn....

成员变量、实例变量和属性变量的区别
    1、成员变量是声明在类{}中的         2、实例变量其实是包含在成员变量中的一种,是有指针引用类型的可叫实例变量,其他的叫基础数据类型变量。        3、属性变量 @property会自动生成getter\/setter方法,并将生成一个带_...

相似回答