A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chniccs 中级黑马   /  2015-4-20 01:01  /  1521 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前对这个了解很少,最近看了毕老师的视频,感觉讲的很详细,把自己的笔记分享给大家。哈哈,大神就不要看了,如果有跟我一样的小白,可以一起看看。:lol

static:


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

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

特点:

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

2、优先于对象存在。

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

3、被所有对象所共享。


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

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

1、存放位置:

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

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


2、生命周期。

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

静态使用注意事项:

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

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

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

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

静态有利有弊

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

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

弊端:生命周期过长。

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

什么时候使用静态?

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

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

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


什么时候定义静态函数?

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



静态代码块

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

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

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
lwj123 + 1
itheima_llt + 1 赞一个!

查看全部评分

20 个回复

倒序浏览
总结得不错。我也刚刚看了毕老师关于面向对象的视频。一起加油。
回复 使用道具 举报
我这部分没看 刚好补习一下 挺好的
回复 使用道具 举报
一个好人 发表于 2015-4-20 09:57
我这部分没看 刚好补习一下 挺好的

:D嘿嘿,大家一起分享喽
回复 使用道具 举报
学习了。      
回复 使用道具 举报

:P。一起学习,一起进步
回复 使用道具 举报
多谢分享!
回复 使用道具 举报
很详细!!
回复 使用道具 举报
不错,写博客上
回复 使用道具 举报
学习了! 谢谢
回复 使用道具 举报
6666666666666666
回复 使用道具 举报
这个贴不错!
回复 使用道具 举报

:#多谢大神夸奖
回复 使用道具 举报
有复习了一次
回复 使用道具 举报
赞一个,加油
回复 使用道具 举报

:P。。谢谢大神,加油
回复 使用道具 举报
刚好复习了···
回复 使用道具 举报
学习了!!
回复 使用道具 举报
lclxjzz 发表于 2015-4-20 23:34
刚好复习了···

哈哈哈:lol
回复 使用道具 举报
看了又忘啊 纠结啊
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马