为了账号安全,请及时绑定邮箱和手机立即绑定

不等号的问题

不等号的问题

慕粉3233872 2016-11-25 15:09:02
import java.util.ArrayList; public class test {  public static void main(String[] args) {   ArrayList<Integer> list = new ArrayList<>();   list.add(249999);   list.add(249999);   System.out.println(check(list));   //System.out.println(249999==249999);  }    private static boolean check(ArrayList<Integer> list){   int k = list.size()/2;   for(int i=0;i<k;i++){    int a = list.get(i);    int b = list.get(list.size()-1-i);    //if(list.get(i)!=list.get(list.size()-1-i)){    if(a!=b){     return false;    }   }   return true;  } }第18、19行,如果用下面那句a!=b输出true,如果改成上面那句却输出false,为什么,好奇怪啊
查看完整描述

2 回答

?
幕布斯1828393

TA贡献5条经验 获得超1个赞

具体数字的比较和其他类型的比较问题;一般除非你非常明确比较的是数字才吃用=做比较,否则使用equals方法。

查看完整回答
反对 回复 2016-11-26
?
望远

TA贡献1017条经验 获得超1032个赞

int a = list.get(i);
int b = list.get(list.size()-1-i);//get()方法返回的是一个Integer对象,这里有一个自动拆箱的过程,之后比较a!=b就是比较两个数值
if(list.get(i)!=list.get(list.size()-1-i))//这里是直接用!=比较两个Integer对象是不行的,要用equals()方法
if(!list.get(i).equals(list.get(list.size()-1-i)))//改成这样就行


查看完整回答
反对 回复 2016-11-25
?
Kamey

TA贡献20条经验 获得超4个赞

a!=b是int基本类型比较,上面那句是Integer对象比较,不一样,所以上面那个是FALSE、

查看完整回答
反对 回复 2016-11-25
  • 2 回答
  • 0 关注
  • 1806 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信