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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fightingwang 中级黑马   /  2015-2-14 11:47  /  711 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.static静态关键字
用法:是一个修饰符,用于修饰成员(成员变量,成员函数),static修饰的成员就不在对内存里了,静态修饰内容被
对象所共享
当成员被静态修饰后就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用。类名.静态成员
2.static特点(内存部分):
A.随着类的加载而加载
                当类被使用时,该类就要进内存,这时静态就已经存在了,所以当类消失时,静态也就不在了。同时说明它的周期
                也是最长的-----静态成员变量==类变量----成员变量==实例变量
B.优先于对象的存在
                明确一点,静态是先存在的,对象是后存在的,
C.被所有对象共享
D.可以直接被类名所调用
3.实例变量和类变量的区别
                1.存放位置--类变量随着类的加载而存在于方法区中
                                            --实例变量随着对象的建立而存在于堆内存中
                2.生命周期--类变量生命周期最长,随着类的消失而消失
                                                --实例变量生命周期随着对象的消失而消失
4.静态的使用注意事项:
A.静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态
B.静态方法中不可以定义this.super关键字,因为静态优先于对象存在,所以静态方法中不可以出现this关键字
C.静态的利弊
                --利处,对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象中都存储一份。
                                    可以直接被类名调用
                --弊端,生命周期过长,访问出现局限性(静态虽好,但只能访问静态)
D.主函数是静态的。
                --主函数,它是一个特殊的函数,作为程序的入口,可以被JVM调用
5.什么时候使用静态?
要从两方面下手:
A.因为静态修饰的内容有成员变量和函数
什么时候定义静态变量(类变量)呢?
当对象中出现了共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态。存在于堆内存中
什么时候定义静态函数呢?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的
3.方法区(共享区或数据区):
类中的方法和类中的共享数据

3 个回复

倒序浏览
对象中出现了共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态。
回复 使用道具 举报
rehan 发表于 2015-2-14 11:54
对象中出现了共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态。 ...

对象中就不能定义静态数据吧
回复 使用道具 举报
rehan 发表于 2015-2-14 11:54
对象中出现了共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态。 ...

对的,我看错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马