文档章节

[笔记]改善Java程序的151个建议---第二章 基本类型

jimyao
 jimyao
发布于 2016/01/29 14:46
字数 628
阅读 5
收藏 0
点赞 1
评论 0

第二章 基本类型
8个:byte,char,short,int,long,float,double,boolean

建议21;用偶判断,不用奇判断
public class Client{
     public static void main(String[] args){
          Scanner input = new Scanner(System.in);
          System.out.print("请输入多个数字判断奇偶: ");
          while(input.hasNextInt()){
               int i = input.nextInt();
               String str = i + "->" + (i%2 == 0 ? "奇数" : "偶数");  //用偶数判断
               System.out.println(str);
          }
     }
}

建议22:用整数类型处理货币
(1)用BigDecimal
(2)用整型。参与运算时候,扩大100倍,转换整形,计算后再除100倍。

建议23:不要让类型默默转换
int越界溢出
主动声明式类型转化
long dis = 1L * SPEED * 60 * 8;

建议24: 边界还是边界
边界测试:0,正最大值,负最小值

建议25:不要让四舍五入亏了一方
银行家舍人算法:
舍去位的数字小于5时候,直接舍去;
舍去位的数值大于等于6时候,进位后舍去
舍去位的数值等于5时候,5后面还有其他数字,则进位后舍去;5后面是0,根据5前一位奇偶性来判断是否需要进位,奇数进位,偶数舍去。
用RoundingMode类的Round模式。
//存款
BigDecimal d = new BigDeciMal(88888);
//利率
BigDecimal r = new BigDeciMal(0.000018);
//计算利息
BigDecimal i = d.multiply(r).setScale(2, RoundingMode.HALF_EVEN);

建议26:提防包装类型的null值
Java引入包装类型(Wrapper Types)解决基本类型的实例化问题。如:Integer
List<Integer> list = new ArrayList<>();
list.add(null);//会报错
加入对null的检查
public static int f(List<Integer list>){
     int count = 0;
     for(Integer i : list)
          count += (i != null) ? i : 0;
     return count;
}

建议27:谨慎包装类型的大小比较
基本数据类型用>,<,=比较
包装类型用compareTo方法比较,包装类型实现了Comparable接口

建议28:优先使用整形池
Integer.valueOf在-128至127之间转换为Integer对象,直接从整形池获得。所以是相等。超出这个范围new一个新Integer对象。
在声明包装对象时候用valueOf生产,而不是通过构造函数生产。
判断对象相等时候,用equals方法。

建议29:优先选择基本类型

建议30:不要随便设置随机种子
java中随机数的产生取决于种子,随机数和种子之间的关系原则;
种子不同,产生不同的随机数
种子相同,即使实例不同也产生相同的随机数。
Random默认种子是System.nanoTime()的返回值
java.util.Random
Math.random

© 著作权归作者所有

共有 人打赏支持
jimyao
粉丝 17
博文 66
码字总数 27856
作品 0
朝阳
云栖社区专家系列课——Java必修课第一讲

本节课为 Java必修课第一讲。在本节课中,最课程创始人、微软MVP陆敏枝为了大家介绍了当前Java行业的IT人才供需情况、Java基本语法、JDK的下载与安装、Java环境变量的配置以及第一个Java程序...

笑傲江湖lcx
07/03
0
0
《编写高质量代码:改善java程序的151个建议》笔记

前言: 很喜欢作者的前言: 对于java,我非常感激,从物质上来说,它给了我工作,帮我养家糊口;从精神上来说,它带给我无数的喜悦、困惑、痛苦、无奈------一如我们的生活。 第10章:性能和...

城固如春
2017/11/01
0
0
读书笔记之《Java并发编程的艺术》-并发编程容器和框架(重要)

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
1
Java程序员们读什么书决定了对未来职业方向的选择

学习Java最痛苦的事情莫过于对未来职业方向的选择。尤其是选择开发Java Application还是Java Web方向,在你先定好大类后还有数不尽的小类教你无从学起。 因此,作为初学者的你必须看完本文。...

kingdelee
2014/10/08
0
0
Scala学习笔记(2)-基础语法

秉着简洁而不失完整的的原则,这章只把Scala主要语法和与Java不同的内容列出来,以后章节也如此,内容以简洁为主,太长了自己都被吓着了,也没耐心看下去。 1.Scala解释器使用,这里不做介绍...

山海经
2013/08/25
0
0
编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础

The reasonable man adapts himself to the world;the unreasonable one persists in trying to adapt the world to himself. —萧伯纳 相信自己看得懂就看得懂了,相信自己能写下去,我就开始......

泥沙砖瓦浆木匠
2014/05/27
0
0
Arrays.asList陷阱

代码如下 public static void main(String[] args) { int[] data = {1,2,3,4,5}; List list = Arrays.asList(data); System.out.println("列表中的元素数量是:" + list.size()); } 注意这里......

肥猫钓鱼
2014/03/20
0
0
《编写高质量代码:改善Java程序的151个建议》的一些笔记

1、int 最大值为2147483647,若计算溢出,则结果为负值。 如,2147483647+1,结果为-2147483648。 所以,如果一个方法接收的是int 类型的参数,那以下三个值是必测的:0、正最大、负最小,其...

xiejuntao
2013/12/25
0
0
读书笔记之《Java并发编程的艺术》-并发编程基础

读书笔记部分内容来源书出版书,版权归本书作者,如有错误,请指正。 欢迎star、fork,读书笔记系列会同步更新 git https://github.com/xuminwlt/j360-jdk module j360-jdk-thread/me.j360....

Hi徐敏
2015/11/11
0
8
java学习笔记,一切都是对象

一切都是对象 操纵的标识符实际上是对象的一个“引用”(reference).可以想象成用遥控(引用)操纵电视机(对象)。 对象存储的地方 寄存器 这是最快的存储区,位于处理器内部。寄存器的数量极...

第五郎
2014/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring boot中swagger2使用

1.pom.xml中添加 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>......

说回答
8分钟前
0
0
tomcat虚拟路径的几种配置方法

tomcat虚拟路径的几种配置方法 一般我们都是直接引用webapps下面的web项目,如果我们要部署一个在其它地方的WEB项目,这就要在TOMCAT中设置虚拟路径了,Tomcat的加载web顺序是先加载 $Tomcat_ho...

Helios51
20分钟前
1
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
26分钟前
0
0
导航守卫解释与例子

“导航”表示路由正在发生改变。 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住...

tianyawhl
26分钟前
0
0
Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
40分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
41分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
48分钟前
1
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
52分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
59分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部