黑马程序员技术交流社区

标题: 静态的具体用法,,, [打印本页]

作者: 0416_张威    时间: 2015-5-4 21:57
标题: 静态的具体用法,,,
静态:static。
用法:是一个修饰符,用于修饰成员(成员变量,成员方法)。
     当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,
     还可以直接被类名调用。格式: 类名.成员。
  static 特点:
     1 随着类的加载而加载(反之,也随着类的消失而消失)
     2 优先于对象存在
     3 被所有对象所共享
     4 可以直接被类名调用
  实例变量(即成员变量)和类变量(即静态的成员变量)的区别
            1 存放位置的区别
                  类变量随着类的加载而存在于方法区中。
                  实例变量随着对象的建立而存在于堆内存中。
            2 生命周期
                  类变量生命周期最长,随着类的消失而消失。
                  实例变量生命周期随着对象的消失而消失。
  静态使用注意事项:
            1、静态方法只能访问静态成员。
                          非静态方法既可以访问静态成员也可以访问非静态成员。
            2、静态方法中不可以定义this、super关键字。
                          因为静态优先于对象存在。所以不可以出现this等字样。
  静态的优缺点:
            优点:1、对于对象的共有数据进行单独空间存储,节省空间。没有必要在每一个对象中都存储共有的数据。
                   2、 可以直接被类名调用。
           缺点: 1、生命周期过长,随着类的消失而消失。
                   2、访问具有局限性。(静态方法只能访问静态成员)
  为什么要使用静态:
                  如果某个内容是被所有对象所共享,那么该内容就应该用静态来修饰。
                 没有用静态修饰的内容其实是属于对象的特殊描述。
什么时候使用静态:
                因为静态修饰的有成员变量和成员方法,所以要从两方面来分析。
                1、什么时候定义静态变量(类变量)?
                        当对象中出现共享数据时,该数据被静态修饰。
                        对象中的特有数据要定义成非静态存在于堆内存中。
                2、什么时候定义静态方法?
                        当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义为静态的。
  
作者: yufuhong    时间: 2015-5-4 22:08
:victory,,,,,,,,
作者: 黄文昭    时间: 2015-5-4 22:37
谢谢分享。
作者: 米江波    时间: 2015-5-4 23:11
学习了亲  谢谢你的分享
作者: yihuihua    时间: 2015-5-4 23:24
已贴到本地,谢谢分享
作者: 1017161726    时间: 2015-5-4 23:34
看来你理解了
作者: maoczsd    时间: 2015-7-3 23:51
谢,,,,,,,,,,,,,,,,,,,
作者: 鲤鱼仙    时间: 2015-7-4 00:18
谢谢给的总结 自己感觉好乱的




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