java实例成员和类成员变量的区别_Java之实例成员与类成员

一:实例变量和类变量

类体中的成员变量可细分为实例变量和类变量。用关键字static修饰的称作类变量,否则称为实例变量。例如:

class Dog{

float x;    //实例变量

static int  y;    //类变量

}

实例变量与类变量的区别: ①不同对象的实例变量互不相同,也就是说分配给不同对象的实例变量占有不同的内存空间,改变其中一个对象的实例变量不会影响其他对象的实例变量。②所有对象共享类变量,即分配给这些对象的这个类变量占有相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量。③类变量是属于该类的,在类被加载到内存时就为类变量分配了相应的内存空间,故,可通过类名直接访问类变量。

class Factory {

int value = 0;

int limit = 0;

static int step = 2;    //step为类变量

void increat(){

value++;

if(value == limit){

value = 0;

}

}

int getValue(){

int i;

return value;

}

}

public class Lei {

public static void main(String[] args) {

//声明两个对象d1,d2

Factory d1 = new Factory();

Factory d2 = new Factory();

System.out.println(d1.getValue());//输出结果为0

System.out.println(d2.getValue());//输出结果为0

System.out.println(d1.step);//输出结果为2

System.out.println(d2.step);//输出结果为2

d1.increat();//对d1进行了++

d1.step = 3;//对d1的step进行了赋值

System.out.println(d1.getValue());//d1的值变成了1

System.out.println(d2.getValue());//d2的值没有变,依然为0

System.out.println(d1.step);//d1.step的值变成了3

System.out.println(d2.step);//d2.step的值也变成了3!

//这也就说明了,一个对象里的类变量改变,其他对象里的对应的类变量也会改变

//对于类变量,可以直接用类名来访问而不用创建对象

Factory.step = 5;

System.out.println(Factory.step);

}

}

二:实例方法和类方法

方法类型前不加关键字static修饰的为实例方法,加static关键字修饰的是类方法。

区别:①要用对象调用实例方法。②可以用对象调用类方法,也可以用类名调用类方法,也就是说不必创建对象就可以直接调用类方法(创建对象会导致类中的实例变量被分配内存空间)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值