static关键字

static关键字
1、什么是static

​ static是静态修饰符,修饰的方法称为静态方法,修饰的属性称为静态属性

2、非静态属性

​ 非静态的属性和方法都是随着对象的创建而加载的,也就是只有当对象存在时,非静态的属性及方法才会存在。

​ 非静态属性演示:

/**
 *模拟售票功能 
 */
public class Ticket {
	//默认的票数
	private int ticketCount = 100;
    
	//输出销售出一张票数后的值,ticketCount变量减一
	public void sale() {
		if(ticketCount>0) {
			System.out.println("售票一张,还剩"+(--ticketCount)+"张");
		}
	}
    
    public static void main(String[] args) {
        //创建两个售票窗口
		Ticket t1 = new Ticket();
		Ticket t2 = new Ticket();
        
        //两个售票窗各自销售出一张票
			t1.sale();
			t2.sale();
	}
}
/*输出结果是
售票一张,还剩99张
售票一张,还剩99张
*/

​ 这是因为ticketCount变量只存在于对象中,两个不同的对象只能操作各自的ticketCount变量。如果多个对象想要公用同一个变量或方法时,就需要用到static修饰符修饰的静态属性和方法。

3、静态属性

​ 类中的变量或方法前加上static修饰符,属性将会变为静态属性,其作用是使类中的变量或方法被该类的所有对象所共享,同时变量或方法可以在没有创建对象的情况下来进行调用。

​ 静态属性演示:

public class Ticket {
	//默认的票数
	private int ticketCount = 100;
    
	//输出销售出一张票数后的值,ticketCount变量减一。加上static修饰符变为静态变量。
	public void sale() {
		if(ticketCount>0) {
			System.out.println("售票一张,还剩"+(--ticketCount)+"张");
		}
	}
    
    public static void main(String[] args) {
        //创建两个售票窗口
		Ticket t1 = new Ticket();
		Ticket t2 = new Ticket();
        
        //两个售票窗各自销售出一张票
			t1.sale();
			t2.sale();
	}
}
/*输出结果是
售票一张,还剩99张
售票一张,还剩98张
*/

​ 加上static修饰符后ticketCount变量变为共享属性,可以被该类的所有对象使用。因此t1和t2两个对象可以对同一个ticketCount变量进行修改。

4、非静态属性与静态属性的调用

​ 非静态:只能通过对象调用,因为非静态的变量或方法只有在创建对象的时候才会被加载进内存

​ 静态:既可以通过对象调用,也可以通过类名调用,建议使用类名调用(非静态的变量或方法属于对象的,静态的变量或方法属于类的)

​ 演示如下:

	//非静态方法
	public void sale() {
		...
	}
	//静态方法
	public static void show() {
		...
	}
    
    public static void main(String[] args) {
      	Ticket t1 = new Ticket();
      
		t1.show();//可以通过对象调用静态方法,但不建议使用
		Ticket.show();//用类名调用静态方法
        t1.sale();//非静态方法只能通过对象调用
		Ticket.sale();//会报错
	}

​ 不能在静态的方法中调用非静态的变量或方法,因为非静态的变量或方法只有在创建对象的时候才会被加载进内存。如下所示:

public class Ticket {
    //非静态方法
	public void sale() {
		...  
        show();//可以非静态的方法中调用静态的属性或方法    
	}
	//静态方法
	public static void show() {
		...
		sale();//不能在静态的方法中调用非静态的属性或方法,该语句会报错
	}
}

​ 静态的属性及方法都会随着class文件的加载而加载。也就是类加载,那么静态的属性及方法就加载了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值