Java static 关键字


1.变量:

变量可分为实例变量和静态变量:

区别:

1. 静态变量是属于类的,实例变量是属于对象的。

2. 类和对象均可修改静态变量;只有对象可以修改实例变量。

3. 每个实例变量都会给出相应的存储空间。静态变量存储空间只有一份。

2.方法

方法可分为实例方法和静态方法:

区别:

1. 实例方法可以访问静态变量,静态方法不能访问实例变量。

2. 实例方法可以访问静态方法,静态方法不能访问实例方法。

3. 实例方法可以使用this关键字,静态方法不能使用this关键字。

4. 对象可以访问实例方法和静态方法,类只能访问静态方法。


3.类

只有内部类可以用static修饰,即只存在静态内部类,不存在静态外部类。(外部类只能由public,abstract和final修饰,其中abstract和final不能同时出现)

静态内部类不代表成员全部是静态的。

4.接口

只有内部接口可以用static修饰,即只存在静态接口,不存在静态外部接口。 (外部接口只能由public ,abstract修饰)


测试例子:

public class Test {
	
	private int a;	/*实例变量*/
	private static int b;	/*静态变量*/
	
	/**
	 * 静态方法
	 */
	public static void methodA() {
		System.out.println("static method");
//		int t = a;	编译错误,静态方法不能访问实例变量
//		methodB();	编译错误,静态方法不能访问实例方法
		int t = b;	/* 静态方法可以访问静态变量 */
		methodB();	/* 静态方法可以访问静态方法 */
//		t = this.a;	/* 编译错误,静态方法不能使用this关键字 */
	}

	/**
	 * 静态方法
	 */
	public static void methodB() {}
	
	/**
	 * 实例方法
	 */
	public void methodC() {
		System.out.println("instance method");
		int t = a;	/* 实例方法可以访问实例变量 */
			t = b;	/* 实例方法可以访问静态变量 */
		methodA();	/* 实例方法可以访问静态方法 */
		methodD();	/* 实例方法可以访问实例方法 */
		t = this.a;	/* 实例方法可以使用this关键字 */
	}
	
	/**
	 * 实例方法
	 */
	public void methodD() {}
	
	/**
	 * 静态内部类
	 */
    static class A {	
	}
    /**
     * 静态内部接口
     */
    static interface B {
    }
    
    
    /**
     * 静态main方法
     * @param args
     */
    public static void main(String args[]) {
    	
    	Test instance = new Test();	/* 实例 */
    	/* 类和实例均可以访问静态变量 */
    	int a = Test.b;
    		a = instance.b;
    	/* 只有对象可以访问实例变量 */
    		a = instance.a;
//    		a = Test.a; 编译错误 ,类不能访问实例变量
    	Test.methodA();	/* 类可以访问静态变量 */
//    	Test.methodC();	编译错误,类不可以访问实例方法
    	instance.methodA();	/* 实例可以访问静态方法 */
    	instance.methodC();	/* 实例可以访问静态方法 */
    	
    }
    
    
    
    
    
    
    
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值