黑马程序员技术交流社区

标题: 对于static的认识 [打印本页]

作者: chniccs    时间: 2015-4-20 01:01
标题: 对于static的认识
之前对这个了解很少,最近看了毕老师的视频,感觉讲的很详细,把自己的笔记分享给大家。哈哈,大神就不要看了,如果有跟我一样的小白,可以一起看看。:lol

static:


用于修饰成员(成员变量、成员函数),被修饰的成员叫作,静态的成员变量或者类变量。

当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。格式:类名.静态成员

特点:

1、随着类的加载而加载(也就是说,静态会随着类的消失而消失,说明它的生命周期最长。)

2、优先于对象存在。

明确一点:静态先存在。对象后存在。

3、被所有对象所共享。


4、可以直接被类名所调用。

实例变量(成员变量)和类变量的区别:

1、存放位置:

类变量随着类的加载而存在于方法区(共享区、数据区)中。

实例变量随着对象的建立而存在于堆内存中。


2、生命周期。

静态变量随着类加载而加载,成员变量随着对象建立而存在。静态变量生命周期最长。

静态使用注意事项:

1、静态方法只能访问静态成员

2、非静态方法既可以访问静态也可以访问非静态。

3、静态方法中不可以定义this、super关键字。

4、主函数是静态的。(因为主函数需要随着类的加载而存在,以便jvm找到它,并作为程序的入口)

静态有利有弊

利处:对对象的共享数据进行单独空间的存储,节省内存空间。没有必要每个对象中都存储一份。

       可以直接被类名调用。不用需要实例化对象。

弊端:生命周期过长。

          访问出现局限性。(静态虽好,只能访问静态)

什么时候使用静态?

当对象中出现共享数据时, 该数据被静态所修饰。

对象中的特有数据要定义成非静态存在于堆内存中。

当一个功能被很多对象调用时,可以将此功能封装成一个静态的函数,并且放在一个特定的类中,以便不需要实例化对象就可以使用该方法。(为了更加严谨,可以使用private对该类的构造函数进行私有化。)


什么时候定义静态函数?

当功能内部没有访问到非静态数据(对象的特有数据 ),那么该功能可以定义成静态的。



静态代码块

优先于主函数执行。随着类的加载而执行。

只执行一次(因为类只会被加载到内存中一次)


作者: cyr    时间: 2015-4-20 09:56
总结得不错。我也刚刚看了毕老师关于面向对象的视频。一起加油。
作者: 一个好人    时间: 2015-4-20 09:57
我这部分没看 刚好补习一下 挺好的
作者: chniccs    时间: 2015-4-20 10:10
一个好人 发表于 2015-4-20 09:57
我这部分没看 刚好补习一下 挺好的

:D嘿嘿,大家一起分享喽
作者: 907888614    时间: 2015-4-20 11:45
学习了。      
作者: chniccs    时间: 2015-4-20 12:57
907888614 发表于 2015-4-20 11:45
学习了。

:P。一起学习,一起进步
作者: YQliang    时间: 2015-4-20 13:14
多谢分享!
作者: 小feng    时间: 2015-4-20 17:20
很详细!!
作者: 燕赵之风    时间: 2015-4-20 18:22
不错,写博客上
作者: 不存在的奇迹    时间: 2015-4-20 19:28
学习了! 谢谢
作者: 有你好看    时间: 2015-4-20 20:34
6666666666666666
作者: itheima_llt    时间: 2015-4-20 20:58
这个贴不错!
作者: chniccs    时间: 2015-4-20 21:00
itheima_llt 发表于 2015-4-20 20:58
这个贴不错!

:#多谢大神夸奖
作者: 王善辉    时间: 2015-4-20 22:43
有复习了一次
作者: 邓士林    时间: 2015-4-20 23:08
赞一个,加油
作者: chniccs    时间: 2015-4-20 23:16
邓士林 发表于 2015-4-20 23:08
赞一个,加油

:P。。谢谢大神,加油
作者: lclxjzz    时间: 2015-4-20 23:34
刚好复习了···
作者: wanglulu    时间: 2015-4-20 23:46
学习了!!
作者: chniccs    时间: 2015-4-21 00:20
lclxjzz 发表于 2015-4-20 23:34
刚好复习了···

哈哈哈:lol
作者: 海贼王019    时间: 2015-4-21 01:02
看了又忘啊 纠结啊
作者: chniccs    时间: 2015-4-21 09:02
海贼王019 发表于 2015-4-21 01:02
看了又忘啊 纠结啊

哈哈哈。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2