1.equal()和==
(1)Integer
1)推荐用equals(),这个还可以避免一些空指针问题的出现。
2)或者使用Integer.intValue();这样出来的就是int值,就可以直接比较了(可能会抛出空指针异常);
3)当用“==”进行比较时,jvm默认是比较数据在java堆的地址。
参考:https://www.cnblogs.com/ryelqy/p/11014766.html
(2)String
equals:比较两个String对象的值是否相等
= =:比较两个String对象的指向的内存地址是否相等
(3)double
1)转换为字符串:只能比较同精度的
2)使用sun提供的Double.doubleToLongBits()方法
该方法可以将double转换成long型数据,从而可以使double按照long的方法(<, >, ==)判断是否大小和是否相等
3)使用BigDecimal类型
double a = 0.001;
double b = 0.0011;
BigDecimal data1 = new BigDecimal(a);
BigDecimal data2 = new BigDecimal(b);
data1.compareTo(data2)
4)两实数相等:两实数的差的绝对值在允许的范围内认为相等既可认为是相等的
参考:https://blog.csdn.net/FansUnion/article/details/91998918
(4)对象
重写equal()方法
重写equals()方法的步骤一般如下:
1)先用“==”判断是否相等。
2、判断equals()方法的参数是否为null,如果为null,则返回false;因为当前对象不可能为null,如果为null,则不能调用其equals()方法,否则抛java.lang.NullPointerException异常。
3)当参数不为null,则如果两个对象的运行时类(通过getClass()获取)不相等,返回false,否则继续判断。
4)判断类的成员是否对应相等。往下就随意发挥了。
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(this==obj){
return true;
}
if(obj instanceof Dog){
Dog dog=(Dog)obj;
if(dog.age==this.age&&dog.name.equals(this.name)){
return true;
}else{
return false;
}
}
return false;
}
参考:https://www.cnblogs.com/hujingwei/p/5322330.html
2.Queue队列接口
(1)Deque双端队列接口
参考:https://blog.csdn.net/blog_szhao/article/details/23914169
1)ArrayDeque数组队列实现:
Deque<> mydeque = new ArrayDeque<>();
参考:https://blog.csdn.net/qq_30379689/article/details/80558771
https://www.cnblogs.com/wxd0108/p/7366234.html
2)LinkedList链表队列实现:
参考:https://www.cnblogs.com/be-forward-to-help-others/p/6825738.html