将局部变量作用域最小化

将变量一开始就声明在头是十分不明智的选择,局部变量最好是在初始使用的时候才声明,而且尽量给定一个值,好处有三,一是容易读程序,二在对应的语句块使用,可以节省开销,三因为在对应的语句块才申明,外围语句块无法获取,比较安全。

for-each优先于传统的for

了解和使用库类,random举例

public class RandomTest {
public static final Random rnd = new Random();
static int random(int n){
return rnd.nextInt(n);//直接使用提供好的方法,这个是很多高级工程师经过严密设计达到的,牛逼。
} public static void main(String[] args) {
int n = 2*(Integer.MAX_VALUE/3);
int x = 0;
for(long y=0;y<100000000;y++){
if(random(n)<n/2){
x++;
}
}
System.out.println(x);
} }

需要精确则避免float和double,使用bigDecimal,或者以更小的为单位使用INT或LONG来计算

基本类型优先于装箱类型,比如 new Integer(42)==new Integer(42) 是同一性的比较而不是值的比较。

public class AutoBox {

    public static void main(String[] args) {
//Long sum = 0L;
long sum = 0;//这一种会比上一种运行快很多,因为不用拆箱装箱。
for(int x = 0 ;x<Integer.MAX_VALUE;x++){
sum+=x;
}
System.out.println(sum);
} }

字符串连接的时候用StringBuilder代替String

应尽量用接口而不是实现类实现,不用接口的情况主要有而, 一是实现类实现了接口中不存在的方法,而我们又依赖于此,二是框架中的基础为类,那我们也应该实现抽象类的实现而不是具体类 。

 List<String> list = new Vector<String>();//这个是比较好的应用,因为实现的是接口,使其对周围代码不依赖。
Vector<String> list2 = new Vector<String>();//这个就相当糟糕

优化格言,不要计较效率得失,不要优化,不要优化,努力编写好的程序而不是快的程序。

Effective Java通用设计的更多相关文章

  1. [Effective Java]第八章 通用程序设计

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. Effective Java 第三版——10. 重写equals方法时遵守通用约定

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  3. Effective Java 第三版——21. 为后代设计接口

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  4. 《Effective Java》笔记45-56:通用程序设计

    将局部变量的作用域最小化,可以增强代码的可读性和可维护性,并降低出错的可能性. 要使用局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方才声明,不要过早的声明. 局部变量的作用域从它被声明的 ...

  5. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  6. Effective Java 第三版——19. 如果使用继承则设计,并文档说明,否则不该使用

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  7. Effective Java —— 覆盖equals时遵守通用约定

    本文参考 本篇文章参考自<Effective Java>第三版第十条"Obey the general contract when overriding equals" ...

  8. 《Effective java》-----读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...

  9. Effective java读书笔记

    2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...

随机推荐

  1. You Don't Know JS: this & Object Prototypes( 第3章 对象)

    前2章探索了this绑定指向不同的对象需要函数引用的call-site. 但是什么是对象,为什么我们需要指向它们? 本章探索细节. Syntax the rules  that describe ho ...

  2. Vue.js表单校验;动画指令;避免内存泄露。

    Vue.js表单校验: 动画指令:创建自定义的滚动指令. 避免内存泄露. 避免内存泄露 在单页面应用开发时SPA,用户无需刷新浏览器.所以javascript应用需要自行清理组件来防止内存占用不断增长 ...

  3. webpack添加热更新

    之前的wbepack一直没有加上热更新,这是一种遗憾,今天终于加上去了,看不懂我博客的可以看这篇文章:http://blog.csdn.net/hyy1115/article/details/5302 ...

  4. django权限管理(一)

    权限:权限就是一个包含正则的url. Rbac 权限管理: Role-Based Access Control,基于角色的访问控制.用户通过角色与权限进行关联,一个用户可以有多个角色,一个角色可以有多 ...

  5. 3月25 JavaScript 练习题

    一个关于找7的题 <script type="text/javascript" language="javascript"> for(var i=1 ...

  6. JS代码判断IE6,IE7,IE8,IE9

    做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 有一种代码: <script type="text/javasc ...

  7. css单位分析、颜色设置与调色板

    CSS单位分析 px:单位代表像素,1px代表一个像素点. %:设置子元素为父容器的占比. em:代表该元素中一个字体所占字符,常用在文字首行缩进.其具有继承性. rem:始终代表html中的字符所在 ...

  8. ubuntu计划任务的编写

    1,首先,我编写的计划任务是在ubunut系统上的.首先我们来认识一下每一个 * 这样子的符号代表什么意思吧! *  *  *  *  * 从左到右: 第1列表示分钟1-59 每分钟用*或者 */1表 ...

  9. Hive的JDBC

    Hive 的JDBC 包含例子 https://cwiki.apache.org/confluence/display/Hive/HiveClient#HiveClient-JDBC HiveServ ...

  10. SQL Server 创建触发器(trigger)

    update 触发器: if(OBJECT_ID('trigger_compost_up') is not null) drop trigger trigger_compost_up go creat ...