第四十五条:将局部变量的作用域最小化

第四十六条:加强版for循环优于传统for循环

第四十七条:了解和使用类库
书中提到了一个生成随机数的例子。正好需要。

  public static void main(String[] args) {
Random rnd = new Random();
int n = * (Integer.MAX_VALUE / );
int low = ;
for (int i = ; i < ; i++) {
if (Math.abs(rnd.nextInt() % n) < n / ) {
low++;
}
}
System.out.println(low);
}

一般写随机数,都是这么写,以为这会Math.random会生成一个完全随机的随机数。上面那个low计算出来的结果是随机数落在设定的数的前半部分的个数。按照设想应该10000000 / 2 个, 但是最后的结果总是落在6666666左右,也就是随机数并不平均,落在前 1/2 的概率比较大。还有一个问题,因为这个程序调用Math.abs,如果nextInt()返回Integer.MIN_VALUE,那么Math.abs也会返回Integer.MIN_VALUE,假设n不是2的n次方,那么取模(%)后就不是0,是一个负数,这段程序能生成负数。而且这个特别难发现。这里还涉及到尾随机数,如果n是一个比较小的2的乘方,经过一段时间之后,生成的随机数序列将会重复。
Random.nextInt(int),这个方法就能生成真正的随机数。目前为止是。

第四十八条:如果需要精确的答案,请避免使用float和double

用BigDecimal,int和long惊醒货币计算。

第四十九条:基本类型由于装箱基本类型

第五十条:如果其他类型更合适,则尽量避免使用字符串

第五十一条:当心字符串连接的性能
当字符串连接(+)过多时用,StringBuilder代替String。

第五十二条:通过接口引用对象
没什么说的,就是面向接口编程而非实现。

第五十三条:接口优先于反射机制
用反射需要付出的代价:1,丧失了编译时类型检查的好处。2,代码笨拙。3,性能损失
反射机制很强大,对于特定的复杂系统编程任务,它是必要的,但也有缺点。

第五十四条:谨慎地使用本地方法

第五十五条:谨慎地进行优化

第五十六条:遵守普遍接受的命名习惯

Effective java -- 7 通用程序设计的更多相关文章

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

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

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

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

  3. Effective Java 学习笔记----第7章 通用程序设计

    第7章 通用程序设计 第29条 将局部变量的作用域最小化     使一个局部变量的作用域最小化,最有力的技术室在第一次使用它的地方声明.   第30条 了解和使用库      效率提高.如果你不知道库 ...

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

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

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

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

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

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

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

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

  8. Effective java读书笔记

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

  9. 《Effective Java(中文第二版)》【PDF】下载

    <Effective Java(中文第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382186 Java(中文第二版)& ...

随机推荐

  1. 单机Redis实现分布式互斥锁

    代码地址如下:http://www.demodashi.com/demo/12520.html 0.准备工作 0-1 运行环境 jdk1.8 gradle 一个能支持以上两者的代码编辑器,作者使用的是 ...

  2. linux本地文件上传之RZ/SZ和sftp

    将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令. 1.软件安装 (1)编译安装 root 账号登陆后, ...

  3. java 实现HttpRequest 发送http请求

    package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  4. 利用SQL server 的复制功能分散用户访问服务器的负载

    先来了解一下一个基本的关于复制的概念. 什么是复制? 复制就是把数据的多个拷贝(复制品)分发到公司中的各个服务器中,通过复制为多台服务器提供相同的数据.这样用户就可以在不同服务器中访问同样的信息. 对 ...

  5. Hibernate3中generator标签使用

    在XXX.hbm.xml映射配置文件中定义<generator class="native"/>标签是为了告诉Hibernate框架使用什么方式去生成主键class对应 ...

  6. Python读取word文档(python-docx包)

    最近想统计word文档中的一些信息,人工统计的话...三天三夜吧 python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.read ...

  7. Linux与本地上传下载文件

    当出于安全原因,客户的服务器不允许使用windows第三方插件连接的时候,本地windows跟远程的linux服务器进行文件的上下传受到了限制,此时可以在linux服务器上安装一个工具:lrzsz.安 ...

  8. 关于PHP反射

    本文实例讲述了PHP反射机制原理与用法.分享给大家供大家参考,具体如下: 反射 面向对象编程中对象被赋予了自省的能力,而这个自省的过程就是反射. 反射,直观理解就是根据到达地找到出发地和来源.比如,一 ...

  9. windows常用dos命令

    常用命令: d: 回车   磁盘切换 dir: 查看该目录下所有的文件和文件夹: md: 创建文件加 rd: 删除目录 cd: 进入指定的目录 cd..:回退到上级目录 cd\  :回退到根目录 de ...

  10. Myecplise Tomcat 启动很慢

    今天突然遇到一个问题,tomcat在Myecplse启动非常慢,直接用tomcat自带的start.bat启动很快,如果通过Myeclipse启动会发现项目一直在实例化,最后发现是因为加了断点调试,断 ...