effective java——12考虑实现coparable接口
float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。
package com.jqf.www;
import java.math.BigDecimal;
public class test3 {
public static void main(String[] args) {
System.out.println(0.2+0.1);//s输出结果有误 false
BigDecimal a=new BigDecimal("0.2");
BigDecimal b=new BigDecimal("0.1");
System.out.println(a.add(b));//true
float d=(float) 0.1;
float c=(float) 0.2;
System.out.println(d+c);//true
int dd=;
int tt=;
System.out.println(tt+dd);//true
double d2=0.2;
double d3=0.1;
System.out.println(d2+d3
);//false
}
}
于Comparable接口其中只有一个方法——compareTo。此方法和equals有类似之处,不过它所表达的含义相比equals要更多。equals通常是比较两个值是否相等,相等返回true,不相等返回false。compareTo则约定为第1对象若“大于”第2个对象则返回整数,“等于”则返回0,“小于”则返回负数,compareTo能约定更为复杂的“比较”,例如比较两个字符串进行字典序的比较,str = “abc”, str2 = “abd”,str.equals(str2)返回false,而str.compareTo(str2)则返回正数。compareTo与equals一样同样需要遵守自反性、对称性、传递性。同样有一个强烈的建议就是compareTo应该返回和equals方法相同的结果,但如果不一致,也不是不可以,就是最好能在注释中写明两个方法返回的结果不同。
public class WorldList {
public static void main(String[] args) {
Set<String> s=new TreeSet<String>();
s.add("b");
s.add("a");
Collections.addAll(s,args);
System.out.println(s);//[a, b]
}
}
public class compareTest {
public static void main(String[] args) {
Integer a=;
Integer b=;
System.out.println(a.compareTo(b));
}
}
effective java——12考虑实现coparable接口的更多相关文章
- Effective Java 第三版—— 20. 接口优于抽象类
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Effective Java 第三版——22. 接口仅用来定义类型
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- Effective Java 【考虑实现Comparable接口】
Effective Java --Comparable接口 compareTo方法是Comparable接口的唯一方法.类实现了Comparable接口,表明它的实例具有内在的排序关系. 自己实现co ...
- Effective Java 第三版——65. 接口优于反射
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- Effective Java读书笔记--类和接口
1.使类和成员的可访问性最小化不指定访问级别,就是包私有.protected = 包私有 + 子类一般private不会被访问到,如果实现了Serializable,可能会泄露.反射.final集合或 ...
- Effective Java 12 Consider implementing Comparable
Sort array with sorted collection construction. public class WordList { public static void main(Stri ...
- 《Effective java》-----读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己!预计在2016年要看12本书,主要涉及java基础.Spring研究.java并 ...
- Effective java读书笔记
2015年进步很小,看的书也不是很多,感觉自己都要废了,2016是沉淀的一年,在这一年中要不断学习.看书,努力提升自己 计在16年要看12本书,主要涉及java基础.Spring研究.java并发.J ...
- Effective Java Index
Hi guys, I am happy to tell you that I am moving to the open source world. And Java is the 1st langu ...
随机推荐
- Python 第五阶段 学习记录之---Django 进阶
Model 一.创建表 1.基本结构 字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bi ...
- MongoDB集群单mongos的问题总结
问题发现 在使用过程中,通过spark访问集群的效率不是很令人满意,80核心同时运行的速度比单核心也就快了20倍左右,预测瓶颈在mongodb读写上.当然,此时没遇到其他问题暂时没进行问题梳理. 在数 ...
- dataguard从库删除归档的例子
deletearchlog.sh #!/bin/sh export PATH TABLE='v$archived_log' sqlplus -silent "/ as sysdba" ...
- socket实现文件传输
server:===========================================import socketimport structimport jsonsk = socket.s ...
- Python3 tkinter基础 Menubutton 点击按钮出现下拉菜单
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- C#方法过滤器
方法过滤器 使用Emit和注解属性Attribute实现 使用方式 1. 自定义方法过滤器 可分别定义方法执行前过滤器, 方法执行结束过滤器, 方法异常过滤器 执行前过滤器继承 ExecutingFi ...
- 没有显示器、网线、路由器,编辑TF卡连接树莓派
只有电脑,连接树莓派的方法 电脑新建热点 打开TF卡,在根目录新建文件wpa_supplicant.conf,内容如下 country=GB ctrl_interface=DIR=/var/run/w ...
- Foxmail7.2新建的文件夹不见了
Foxmail在客户端上,新建了几个文件夹,并把相应的邮件都都选择了“总是把**邮件转移到”这个选项. 今天早上打开电脑一看,所有的邮件连同对应的文件夹都找不到了 Foxmail中没显示因为默认是隐藏 ...
- C#时间戳的简单实现
Introduction: 在项目开发中,我们都经常会用到时间戳来进行时间的存储和传递,最常用的Unix时间戳(TimeStamp)是指格林尼治时间1970年1月1日0时(北京时间1970年1月1日8 ...
- ES6之Array数组
定义数组 ,]; const arr = new Array(1,2,3,4); const array1 = new Array(); array1[]="test"; 给数组不 ...