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

© 十甫寸 中级黑马   /  2013-7-25 16:23  /  3022 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看毕老师视频,还是有一点不明白,不知道什么时候该把方法定义成静态的?求解惑,3q!

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

10 个回复

正序浏览
当功能内部没有访问到非静态数据,那么该功能可以定义成静态的。
回复 使用道具 举报
从两个方面解释这问题
第一静态的特点
1静态修饰的成员变量,变成了对象的共享数据
2被静态修饰的多了一个调用方式,类名调用
3静态修饰的成员变量,方法区,静态区
4static 可以修饰成员,不能修饰局部第二什么时候使用静态
1当出现对象共享数据时,使用static修饰成员变量
2当成员方法,没有访问过对象的特有数据时,建议,方法定义成static


回复 使用道具 举报
定义一个类成员,需要该成员独立于任何对象存在,定义成static.
或者某些类成员是所有对象都共同使用的,为了节约内存,定义成static。
回复 使用道具 举报
本帖最后由 李健09 于 2013-7-25 23:14 编辑

当功能内部没有访问到对象特有数据,那么该功能可以定义成静态的。
刚刚看到,你可以看下chilong_333他的帖子下面是,个人感觉挺好的
chilong_333
什么时候使用static,对static的理解以及应用
http://bbs.itheima.com/thread-61068-1-1.html
(出处: 黑马程序员训练营论坛)

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main()。因为在程序开始执行时必须调用main() ,所以它被声明为static。
声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,但最好采用前者,因为后者容易混淆静态变量和一般变量。静态变量是跟类相关联的,类的所有实例共同拥有一个静态变量。
声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。静态方法不能被子类的静态方法覆盖
回复 使用道具 举报
当想要被静态方法调用时而不想实例化对象再调用的话就把该方法定义为静态的;

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报

静态成员:在多个对象都需要使用同一个资源的时候适合使用静态变量 或者多个对象拥有一个相同的属性的时候也适合 这样可以节省不必要的内存开支  
静态方法:在方法没有涉及到类的非静态变量或者对象的资源的时候适合使用静态方法
回复 使用道具 举报
假设一个public方法不是静态的 那么你必须实例化才能访问到这个方法  假设一个案例 电影院一个电影的票数 如果你不用静态的话 那么一个柜台实例化一个票数的变量 那么A柜台实例化默认100 卖出10张 应该还剩下90张 但是在B柜台上看 票数还是100张  如果用静态的话 那么A卖了10张 那么B刷新一下 就编程90张了  简单说如果你的多个实例需要用的同一个数据的话 那个数据最好用静态变量来保存 当然了 静态变量也不需要实例化才能访问的
回复 使用道具 举报
假设一个public方法不是静态的 那么你必须实例化才能访问到这个方法  
假设一个案例 电影院一个电影的票数 如果你不用静态的话 那么一个柜台实例化一个票数的变量 那么A柜台实例化默认100 卖出10张
应该还剩下90张 但是在B柜台上看 票数还是100张  如果用静态的话 那么A卖了10张 那么B刷新一下 就编程90张了  
简单说如果你的多个实例需要用的同一个数据的话 那个数据最好用静态变量来保存 当然了 静态变量也不需要实例化才能访问的

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马