Java中Static的特点

本文深入解析Java中Static关键字的五大特点,包括修饰成员变量和方法、随类加载而加载、优先于对象存在、被所有对象共享及可通过类名调用等。同时,对比静态变量与成员变量的区别,帮助读者理解何时应使用静态static。

Static的特点 : 

              1.Static可以修饰成员变量也可以修饰成员方法。

              2.随着类的加载而加载,如图main方法是由static修饰的,如果不用static修饰,当class文件加载之后没有加载,那么虚拟机调用时就会找不到main方法,那么就会报错如?图:

                  

                所以静态资源随着类的加载而加载。

               3.优先于对象存在。(因为当class文件创建是static就已被加载,原因看上一条,而对象创建是由new关键词创建的,而当class文件创建时没有创建对象。)

               4.被类所有的对象共享。

                               这个特点告诉我们什么时候使用静态static 。如果某个成员变量是被所有对象共享的,那么他就应该定义为静态的。

                               举例:

                                      饮水机(用静态修饰),因为不可能每个对象都创建一个饮水机方法,所以用静态修饰。

                                      水杯(不能用静态变量修饰),因为不可能每个对象都使用同一个水杯变量,所以不能用静态修饰。

              5.可以通过类名调用

                              其实也可以通过对象名调用。

                              推荐使用类名调用。(因为静态修饰的内容我们一般称其为:与类相关的,类成员) 

              示例代码:

class Num{
	static int a=10;
	int b=20;
}

public class Static_method {

	public  void main(String[] args) {
		// TODO Auto-generated method stub

		Num n=new Num();
		System.out.println(n.a);
		System.out.println(n.b);
		System.out.println(Num.a);
	}

}

          输出结果:

           

        static的内存图解:

static注意事项:

              1.在静态方法中没有this关键字

                      因为静态是随着类的加载而加载,this是随着对象的创建而存在, 

                      静态比对象先存在。    

                       

              2.静态方法只能访问静态的成员变量和静态的成员方法

                        静态方法:

                                成员变量:只能访问静态变量

                                成员方法:只能访问静态成员方法。

                         非静态方法:

                                 成员变量:可以是静态的,也可以是非静态的;

                                 成员方法:可以是静态成员方法,也可以是非静态成员方法;

                简单记:

                         静态只能对静态。

 

总结:

        静态变量和成员变量的区别:

                 1.所属不同

                         静态变量属于类,所以也称为类变量

                         成员变量属于对象,所以也被称为实例变量(成员便量)。

                 2 .内存中位置不同

                         静态变量存储于方法区的静态区。

                         成员变量存储与堆内存

                  3.内存出现时间不同

                         静态变量随着类的加载而加载,随着类的小时而消失

                         成员变量随着随着对象的创建而创建,随着对象的消失而消失

                   4.调用不同

                         静态变量可以通过类名调用,也可以通过对象调用

                         成员变量只能通过对象名调用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值