Java-18 static

static

如果希望有些属性不应为对象的不同而改变,就将它设置为static,方法也同样可以

被修饰的成员具备以下特点
随着类的加载而加载//类加载之后,静态方法或属性就能用了
优先于对象存在//不用new
修饰的成员被所有对象所共享
访问权限允许时可不创建对象,直接被调用

因为不需要实例就可以访问static方法,所以static方法内部不能有this和super

class 梯形{
	float 上底,;
	static float 下底;
	
	梯形(float x, float y, float h){//构造器
		上底 = x;
		下底 = y;= h;
	}
	
	float 获取下底(){
		return 下底;
	}
	
	void 修改下底(float b ) {
		下底 = b;
	}
}

public class CommonLader {
	public static void main(String[] args) {
		梯形 l1 = new 梯形(3.0f, 10.0f, 20);
		梯形 l2 = new 梯形(2.0f, 3.0f, 10);
		
		System.out.println("l1的下底" + l1.获取下底());
		System.out.println("l2的下底" + l2.获取下底());
		l2.修改下底(60);
		System.out.println("l1的下底" + l1.获取下底());
		System.out.println("l2的下底" + l2.获取下底());
	}
}

输出:
l1的下底10.0
l2的下底3.0
l1的下底10.0
l2的下底60.0

使用static修饰的成员变量是类变量,属于该类本身;
没有使用static修饰的成员变量是实例变量,属于该类的实例。

由于同一个JVM内每个类只对应一个Class对象,因此同一个JVM内的一个类的类变量只需一块内存空间;但对于实例变量而言,该类每创建一次实例,就需要为实例变量分配一块内存空间。也就是说,程序中有几个实例,实例变量就需要几块内存空间。

class Person {
    static int eyeNum;
    int age;
}
   Person.eyeNum = 2;  //类变量属于类

当程序创建Person对象时,系统不再为eyeNum类变量分配内存空间,执行初始化,而只为Person对象
的实例变量执行初始化,因为实例变量才属于Person实例,而类变量属于Person类本身。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值