Java中static的陋见(欢迎指正、补充)

在Java的类构建中,我们肯定会使用到static这个关键字,作为一个让程序更加高效、内存更加节省的方法,合理的使用static能让我们的程序流畅和节省空间。

         下面就本菜鸟就从新手的角度说说对static的认识吧!

         众所周知,类中的变量分为实例变量和类变量,方法分为实例方法和类方法。变量和方法的区别在于有没有关键字static修饰,有点事类方法、类变量,没有的是实例方法、实例变量。那我们就从变量和方法两个角度来说说static:

 

         Static也叫做静态修饰词,在修饰变量时,形成静态变量(类变量)。类变量与实例变量的区别如下:

1.      .生存周期的差异:static型变量在类的字节码加载到内存时就被分配了内存空间,直到程序结束时才销毁、释放空间。实例变量只有在类被实例化对象时才分配内存空间,也就是说实例变量是从对象定义到对象被Java垃圾回收机制销毁这期间存在。

2.      私有性和公有性:static型变量在字节码加载到内存就分配空间,以后类实例的每个对象都可以对其进行访问,并不再次创建。但是实例变量是对象私有的,各个对象只能访问自己的实例变量,而不能访问其他对象的非static变量。

3.      应用的不同(地址的不同):static变量在类加载时分配内存(固定地址),实例变量在对象创建时分配内存,每个对象的同名实例变量是有不同地址的。

4.      访问方式的不同:static变量可以通过 类名+“.” 访问修改或 对象+“.”访问修改。实例变量只有在类实例为对象后,用 对象+“.”访问修改。

 

         Static方法(类方法)与实例方法的区别:

1.      同static变量类似,static方法在类的字节码加载到内存时就提供方法的入口地址,不管该类是不是实例为对象。非static方法只有在类实例为对象后提供入口地址。

2.      Static型方法与实例方法地址:在一个类创建多个对象时,Static型方法与实例方法地址都是唯一的,也就是对象1的方法1和对象2的方法1拥有一样入口地址,方法的入口地址在创建第一个对象是分配,以后的对象引用就可以了。

 

用static理解不同方法操作变量的限制,Java 的学习中可以看见这样一句话:“实例方法可以操作类变量、实例变量以及类方法;类方法只能操作类变量和类方法”。刚学时不知道为什么,学了static后似乎理解了它的科学性。这得从static型变量、方法存在的时期来理解,static方法在类还没实例为对象时就存在在内存中,此时存在的只有类变量和其他所有的类方法,所有类方法只能操作类方法和类变量,因为实例变量根本就不存在,哪里去操作?而实例方法就不同了,在它存在时,实例变量、类变量、实例方法、类方法全都存在在内存中,所有它可以操作这些数据。

 

Static关键字的目的:static变量实现了不同对象的共用,节约了内存资源、加快了程序了运行流畅性,static方法在不用创建对象时就可以加以引用,不用为了实现一个常用的方法去创建一个对象来达到目的,也达到了节约资源的目的。

(菜鸟陋见,文本不好没说清的地方欢迎大神们指正、补充。QQ:786627369)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值