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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨道红 中级黑马   /  2014-1-9 21:19  /  1615 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨道红 于 2014-1-10 19:50 编辑

分析利弊:
看过毕老师第21天最后一个视频,讲的是存储5个学生信息包含语数外三门课程成绩,按成绩总分排序。
在这个程序中,毕老师的学生工具类有2个方法,static Set<student> getStudents()和static void write2File(Set<Student> stus)
而我写的学生工具类中也有2个方法,但在方法外申明了一个private TreeSet<Student> ts = null; 在我的getStudents()方法中定义了TreeSet具体实例,将值记录。在write2File()就直接取出TreeSet中数据。
我定义的方法都不是静态的。毕老师定义的方法都是静态的。
这两种方式效率如何?谁更优?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

1 个回复

倒序浏览
对于静态方法与非静态方法他们之间效率问题,可以说有点差别,但基本可以忽略。真正要明白的是,该方法是否该用静态。
被static修饰的成员变量和成员方法独立于该类的任何对象,static对象可以在它的任何对象创建之前访问,无需引用任何对象。即该方法如果没有必要访问对象外部时,最好将该方法设置为静态。因为会被更快地调用,因为她不需要一个虚拟函数导向表。比如工具类就是最好例子。
即静态方法与普通方法的区别在于:普通方法多了一两次引用的查找时间。这个时间可以忽略不计

但不宜过多设置静态成员或方法,静态的弊端就不多说了,合适才最重要。

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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