编写高质量代码:改善Java的151个建议四(基本类型)21-30

该书籍PDF下载地址:http://download.csdn.net/download/muyeju/10001473

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

21.用偶判断,不用奇判断

 当判断一个数是偶数还是奇数的时候,应该判断是否是偶数。

 i%2==0?"偶数":"奇数"

 取余的原理:

 被除数-被除数/除数*除数

22.货币的值

  货币的值一般都是2为小数,如果用浮点类型的话,计算机计算出来的结果可能是不准确的,它只能无限接近某个值,而不能完全精确,这是由浮点数的存储规则决定的。就像十进制里面三分之一不能准确表示,二进制里面五分之一也不能准确表示。

  例:10-9.6=0.40000000000000036

 解决方法:

 1.使用BigDecimal处理

 2.使用整形,只要展示时缩小100倍就可以了,及是以分为单位

23.基本类型转换时,使用主动声明方式减少不必要的Bug

  Java是先运算,然后进行类型转换。超过了int的最大值时,其值就是负,因为过界了就会从头开始

24.基本类型的边界

    对基本类型进行判断的时候,应该注意其边界值,一旦超过边界值,就会使校验条件失效。所以应避免输入或传入的值就行计算,直接用输入或传入的值进行判断

 例如:

package deep;import java.util.Scanner;public class Client {// 一个会员拥有产品的最多数量public static final int LIMIT = 2000;public static void main(String[] args) {// 会员当前拥有的产品数量int cur = 1000;Scanner input = new Scanner(System.in);System.out.println("请输入需要预定的数量:");while (input.hasNextInt()) {int order = input.nextInt();// 当前拥有的与准备订购的产品数量之和if (order > 0 && order + cur <= LIMIT) {System.out.println("你已成功预定了" + order + "个产品!");} else {System.out.println("超过限额,预订失败!");}}}
}

当输入的值是2147483647 这个的时候,会发现也预定成功,这个因为数字越界,使检验条件失效

修改:(order > 0 && order <= LIMIT - cur)成这样就行了,应该避免输入(传入)的参数进行计算

25.根据不同的场景,选择不同的舍入模式

   RoundingMode的几种舍入模式:

       1.RoundingMode.CEILING:向正无穷方向舍入

    2.RoundingMode.FLOOR:像负无穷方向舍入

    3.RoundingMode.UP:像绝对值最大的方向舍入,舍弃非零即进位

    4.RoundingMode.DOWN:像绝对值最小的方向舍入,所有位都舍弃,不存在进位的情况

    5.RoundingMode.HALF_UP:最近数字舍入(5舍)

    6.RoundingMode.HALF_DOWN:最近数字舍入(5舍)

    7.RoundingMode.HALF_EVEN:银行家算法(4舍6入5考虑,5后非0就进1,5后为0看奇偶,5前为偶应舍去,5前为奇要进一)

26.包装类型参与计算时,要做null值校验

  例:

  

27.包装类型的大小比较

  包装类的比较不能用==,因为包装类是对象,用==比较的是对象的引用,即地址是否相等。(如果是基本类型,==比较的是它们的值是否相等)

  用compareTo()方法比较,相等返回0,大于返回1,小于返回-1

  例:

  

public static void main(String[] args) {Integer i = new Integer(300) ;Integer j = new Integer(-600) ;int k = j.compareTo(i) ;System.out.println(k);//结果:-1}

28.优先使用整型池

  整型池:在IntegerCache类中,存在一个cache静态数组,容纳的是-127到128之间的Integer对象。通过valueOf产生包装对象时,如果int在-128到127之间,则之间从整型池中获得对象,不在该范围类的int类型则通过new生成包装对象。

  整型池的存在提高了系统性能,节约了内存空间

  通过包装类的valueOf生成包装实例显著提高空间和时间性能

29.基本类型优先使用

  因为有包装类时,可能会进行一些拆箱装箱的过程,从而导致出现一些想不到的问题

30.不要随便设置随机种子

  随机数和种子之间的关系:

    种子不同,产生不同的随机数

    种子相同,即使实例不同,也产生相同的随机数

    例:

public static void main(String[] args) {Random r = new Random(1000) ;for(int i=1;i<4;i++){System.out.println("--------"+r.nextInt());}
}

  结果始终是:

---------1244746321
--------1060493871
---------1826063944

所以,若非必要,不要设置随机数种子

  

转载于:https://www.cnblogs.com/-scl/p/7641562.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABP vNext微服务架构详细教程(补充篇)——单层模板(下)

业务代码2聚合服务聚合服务层和基础服务层相同的道理&#xff0c;在Demo.Core.Contracts增加Services文件夹&#xff0c;并添加Notifications子文件夹&#xff0c;在其中添加Dtos文件夹并添加两个DTO与基础服务对应&#xff1a;using Volo.Abp.Application.Dtos;namespace Demo…

PHP 电子商城基本数据表

1、品牌表 tp_brand CREATE TABLE tp_brand (id smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT 品牌表,name varchar(60) NOT NULL DEFAULT COMMENT 品牌名称,logo varchar(80) NOT NULL DEFAULT COMMENT 品牌logo,desc text NOT NULL COMMENT 品牌描述,url varcha…

申请成为qq互联个人开发者步骤(注意事项)2018

一、官方网址 官方地址&#xff1a;https://connect.qq.com/manage.html#/ 二、申请时注意事项&#xff1a; 1、申请时的名称栏必须填写身份证上的姓名&#xff0c;否则是不给通过的 2、上传照片时&#xff0c;需要本人手持身份证&#xff0c;重点是照片中身份证上头像的位置要…

《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

本节书摘来自异步社区《Swift开发实战》一书中的第1章&#xff0c;第1.4节启动iOS 8模拟器&#xff0c;作者 李宁&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.4 启动iOS 8模拟器Xcode是一款功能全面的应用程序&#xff0c;通过此工具可以轻松输入、编译…

《算法导论》读书笔记--第1、2章课后题 (转)

第一章 转自http://www.cnblogs.com/batteryhp/p/4654860.html 思考题 1-1&#xff08;运行时间的比较&#xff09;确定时间t内求解的问题的最大规模。 上面是网上提供的答案。 注意点&#xff1a; 1、最左边一列的是关于n的增长情况描述&#xff0c;值得记住的是这些增长的排…

PHP开发自己的框架必备知识点

一、PHP常用的四种数据结构 简介&#xff1a;spl是php的一个标准库。 官方文档&#xff1a;http://php.net/manual/zh/book.spl.php <?php//spl&#xff08;php标准库&#xff09;数据结构/*** 栈&#xff08;先进后出&#xff09;*/ $stack new SplStack(); $stack-&g…

Linux 环境下 jdk1.8 maven3.2.3 Git2.8.0 安装脚本

2019独角兽企业重金招聘Python工程师标准>>> # Author: peizhouyu # Date: 2018-09-07 14:24:11 # Last Modified by: peizhouyu # Last Modified time: 2018-09-07 16:02:58#!/bin/bash SOFT_PATH/opt/softif [ ! -d $SOFT_PATH ];then mkdir $SOFT_PATH else …

《嵌入式设备驱动开发精解》——导读

前言 嵌入式设备驱动开发精解本书的编写主要是针对从事嵌入式软件开发人员。本书的内容主要涵盖ARM CPU以及各种常用外部设备驱动开发的方方面面&#xff0c;包括各种硬件接口、硬件接口协议说明以及各种外设的使用及调试方法&#xff0c;特别是对于开发调试过程中可能遇到的各…

C# WPF通过WindowChrome自定义窗体

概述在WPF界面开发中&#xff0c;系统默认的窗口比较丑&#xff0c;有时候想自定义窗体&#xff0c;比如微信的客户端窗口这样&#xff1a;使得左边的一块顶到最上端&#xff0c;如下图所示&#xff1a;这时候我们可以 WindowStyle"None"&#xff0c;AllowsTranspare…

【转载】递推公式的特征方程及通项公式

先贴上链接&#xff1a;http://blog.csdn.net/happykocola/article/details/73933314 因为最近在复习初赛&#xff0c;然后碰到了这道题&#xff0c;并不会做&#xff0c;才发现有这么高明的方法... 已知递推关系式&#xff1a; f(n)5f(n-1)-6f(n-2) (n>1) f(0)1 f(1)…

【leetcode】75. Sort Colors

题目如下&#xff1a; 解题思路&#xff1a;我的解题思路是遍历数组&#xff0c;遇到0删除该元素并插入到数组头部&#xff0c;遇到1则不处理&#xff0c;遇到2删除该元素并插入到数组尾部。 代码如下&#xff1a; class Solution(object):def sortColors(self, nums):"&q…

Seal-Report: 开放式数据库报表工具

Seal Report是.Net的一个基于Apache 2.0 开源工具&#xff0c;完全用C# 语言编写&#xff0c;最新的6.6 版本采用.NET 6&#xff0c;github: https://github.com/ariacom/Seal-Report。Seal Report提供了一个完整的框架&#xff0c;用于从任何数据库或任何非SQL源生成每日报告。…

《Ceph源码分析》——第2章,第2节Buffer

本节书摘来自华章出版社《Ceph源码分析》一书中的第2章&#xff0c;第2.2节Buffer&#xff0c;作者常涛&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看 2.2 BufferBuffer就是一个命名空间&#xff0c;在这个命名空间下定义了Buffer相关的数据结构, 这些数…

eclipse在server中tomcat server找不到的问题

想要在eclipse的server新建tomcat服务器然而不知道怎么回事找不到Tomcat 7.0 Server 下面的红圈是tomcat server服务器&#xff08;更新后才出现&#xff09; 网上找的很久&#xff0c;只是找到在eclipse中安装tomcat插件的方法 Tomcat免安装版的环境变量配置以及Eclipse下的To…

PHP根据指定url生成二维码图片

一、composer安装 http://packagist.p2hp.com/packages/codeitnowin/barcode 二、使用 调用generateQrCode()方法即可实现生成二维码图片并输出下载给用户 <?php namespace manage\Test;use CodeItNow\BarcodeBundle\Utils\QrCode; use common\extensions\Helper; use y…

CA 周记 - 派福利!通过 Azure 零成本进入 CUDA 编程

我们在配置深度学习环境的时候&#xff0c;除了安装各种库和框架外&#xff0c;如果需要 GPU 加速&#xff0c;还需要配置 CUDA 。那 CUDA 是什么 &#xff1f;它的作用是什么 &#xff1f;CUDA 编程介绍01什么是 CUDA&#xff1f;CUDA (Compute Unified Device Architecture) …

《视图更新与关系数据库理论》——2.1 关系和关系变量

本节书摘来自异步社区出版社《视图更新与关系数据库理论》一书中的第2章&#xff0c;第2.1节&#xff0c;作者&#xff1a;【美】C.J. Date&#xff08;达特&#xff09;&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.1 关系和关系变量 每一个关系都有一…

PHP格式化全国省市区列表

一、代码部分 /*** 获取全国省市区列表&#xff08;格式化后&#xff09;*/public function getRegionList(){$data CoreRegion::find()->select([national_code, region_name, parent_id, region_level])->asArray()->all();$data $this->assembleRegionData($…

从 C# 崩溃异常 中研究 页堆 布局

一&#xff1a;背景 1.讲故事最近遇到一位朋友的程序崩溃&#xff0c;发现崩溃点在富编辑器 msftedit 上&#xff0c;这个不是重点&#xff0c;重点在于发现他已经开启了 页堆 &#xff0c;看样子是做了最后的挣扎。0:000> !analyze -v EXCEPTION_RECORD: (.exr -1) Except…

Win10笔记本不显示wifi列表

一、问题描述 1、连接有线网络时&#xff0c;只显示连接到的有线网络&#xff0c;而不显示wifi列表 2、不连接有线网络时&#xff0c;同样不显示wifi列表 二、解决方案 1、Win R 打开运行&#xff0c;并输入services.msc 2、回车确定&#xff0c;找到WLAN AutoConfig项&…