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

 我来答
百度网友19d0e82
高粉答主

推荐于2019-10-03 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:549
采纳率:98%
帮助的人:16万
展开全部

例如定义一个类:

class Text

{public static int number;

public int temp;}

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

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

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

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

扩展资料:

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

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

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

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

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

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

百度网友c42fb27
2018-05-25 · TA获得超过543个赞
知道小有建树答主
回答量:254
采纳率:33%
帮助的人:150万
展开全部

成员变量就是类里面的变量,不区分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即可,该变量存在静态区的某个固定位置(如果是静态对象,则对象存在堆区,静态区存的是指向该对象的地址),假设在多线程下同时访问该变量,获取的永远是同一份数据,比如一个静态的对象,多线程下获取到的永远都是指向同一个对象。

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋明的思念
推荐于2017-09-12 · TA获得超过248个赞
知道答主
回答量:34
采纳率:0%
帮助的人:51.9万
展开全部
例如定义一个类:
class Text
{
public static int number;
public int temp;
}
如果你想访问temp属性,你就必须先创建一个Text的对象,才能访问:Text b = new Text();
b.temp;这就是实例成员变量。
而你想 访问number的话,不用创建Text的实例就可以访问,就像这样:Text.number.这就是类成员变量。
主要区别就是访问是需不需要创建对象,而对于类成员变量,所有对象是共享一个变量的。
追问
跟static修饰有关?
追答
对的。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-20
展开全部
实例成员变量:非静态成员变量
类成员变量:静态成员变量. 对于这个类的任何实例都是一样的值,不属于某个实例,所以叫类的成员变量
追问
求给个程序例子说明
追答
=====
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柏雅苼Yt
2012-03-15 · 超过13用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:41.1万
展开全部
……不在方法中定义的变量为成员变量。成员变量有两种,有static修饰的为静态成员变量,没有static的为实例变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式