静态成员对比实例成员(static修饰符解析)

5 篇文章 0 订阅
2 篇文章 0 订阅

Java的类中可以包括:实例成员,静态成员

静态成员

类的所有对象在类的范围内共享静态成员(类成员),静态成员(类成员)不属于类中产生的对象,它属于整个类
如,Math类中pow()方法就是一个静态方法,Math.pow(x,y);x^y

静态属性

static修饰符声明的属性成员为静态属性并且唯一对应一个存储位置,静态属性被共享
当某个对象修改了静态属性的值之后,所有对象将使用修改的静态属性值

静态方法

静态方法不操作调用它的对象,不向调用它的对象施加操作的方法,不能用静态方法访问实例属性。通过对象调用静态方法是ok的,类名.方法名
因为不在某个特定对象上操作,引用this是错误的

实例成员

类是一种类型,不是具体的对象,类中定义的实例成员(对象成员)是此类产生的对象都拥有的。

实例属性

没有static属性叫实例属性,每个对象有该类所有实例属性。对象创建时,系统自动给对象创建新的存储位置,每个对象的实例属性存储位置都不相同。修改一个对象的实例属性对其他的对象的实例属性无影响(对比静态属性)

实例方法

在类的给定对象上操作,对象可以作为this访问

应用

静态方法可以访问静态成员变量,不可以访问实例成员变量
实例方法可以访问静态成员变量,也可以访问实例成员变量

public class demo{
	static double PI1=3.14;
	double PI2=3.14;
	double getArea(){//实例方法用静态变量
		return PI1*3*3;
	}
	static double getArea2(){
		return PI*3*3;//静态方法调用静态变量
	}
	double getArea3(){//实例方法用实例变量
		return PI2*3*3;
	}
	static double getArea4(){//静态方法用实例变量
		return PI2*3*3;//不能用
	}
}

静态成员加法,注意结果

class HasStatic(){
	private static int x=100;
	public static void main(String args[]){
		HasStatic hs1=new HasStatic();
		HasStatic hs2=new HasStatic();
		hs1.x++;
		hs2.X++;
		hs1.x++;
		System.out.println("x="+x);
	}
}

结果x=103
所以两个对象都能修改x的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值