Java静态属性和静态方法

static修饰的属性和方法就是静态属性和静态方法。

普通属性 / 普通方法 都绑定着一个隐含的对象 (this),static含义就是和对象解绑,

静态属性不再保存在对象(堆区)中,而是保存在类(方法区)中。

注意:静态方法调用时,没有隐含着的对象,所以也就无法使用this关键字。

一个类的所有的对象,是可以共享静态属性的。(可以适当看作C语言的全局变量)

 

访问静态属性/调用静态方法语法:

类名称.属性名称;

类名称.方法名称(实参列表);

 

public class Test{
    int a=1;//普通属性
    static int b=2;//静态属性
    public static void main(String[] args){//静态方法
    System.out.println(a);//不能访问普通属性
    System.out.println(b);//可以访问静态属性
    }

静态方法不能直接访问普通属性,可以创建对象访问.而普通方法可以直接访问静态属性和普通属性。

public class Test{
    int a=1;//普通属性
    static int b=2;//静态属性
    public static void main(String[] args){//静态方法
    Test p = new Test();
    System.out.println(p.a);
    System.out.println(b);
    }

静态属性和非静态属性的区别:

1、静态属性静态方法都存放在内存中的方法区  而普通属性存放在内存中的堆区

2、静态属性或方法在没创建对象之前就已经存在 而非静态属性在创建对象之后才存在

3、一个类的所有的对象,是可以共享静态属性的。

4、 静态属性在类消失之后才销毁  而非晶态属性在对象销毁之后才销毁的

5、静态属性可以通过类名直接访问  非静态属性不能通过类直接访问只能通过对象访问

 

属性的初始化(发生在生命周期的第二阶段,对象实例化的时候)

1)定义时初始化   int a=10;
2)构造代码块
{
    a=10;
}
3)构造方法中初始化
 Person(){
    a=10;
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

1)和2)先执行 ,3)最后执行

构造方法初始化写在前也最后执行

 

静态属性的初始化

1)static int a=10;      1)和2)按照定义顺序依次执行
2)静态构造代码块
static{
    a=20;
}

先初始化静态属性再普通属性。

由以下代码验证:

public class A {
	A() {
		System.out.println("构造方法中,a = 30");
		a = 30;
	}
	
	{ System.out.println("构造代码块 1时,a = 0"); a = 0; }
	int a = init();
	{ System.out.println("构造代码块 2时,a = 20"); a = 20; }
	
	
	int init() {
		System.out.println("定义时  a = 10");
		return 10;
	}
	
	static {
		System.out.println("静态代码块 1时,staticA = 100");
		staticA = 100;
	}
	static int staticA = staticInit();
	static {
		System.out.println("静态代码块 2时,staticA = 300");
		staticA = 300;
	}
	
	static int staticInit() {
		System.out.println("静态定义时  staticA = 200");
		return 200;
	}
	
	
	public static void main(String[] args) {
		A p = new A();
		A q = new A();
	}
}

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值