关于java里面比较数组的问题

william0218 2007-06-25 07:04:11
今天写代码的时候,遇到一个奇怪的问题,就是判断两个数组是否相等的时候如果写成“if(arrayA[i] == arrayB[j])”的话,有的时候无法正常判断这两个数组元素是否相等,即使真的相等,也认为不相等,但是有的时候又可以正确判断(我在两个工程里面分别作了这种比较,发现在一个工程里面可以,而在另一个工程里面却不行),如果写成“if(arrayA[i].equals(arrayB[j]))”的话则可以正确判断出来,请问这两种写法区别在哪里呢?谢谢!
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bindian 2007-06-25
  • 打赏
  • 举报
回复
equals()比较的是值是否相等,而==比较的是地址是否相等.
foxson1983 2007-06-25
  • 打赏
  • 举报
回复
对象之间比较实际内容用equals(),这是几乎每个类都有的方法,不然有可能比较引用了.
joejoe1991 2007-06-25
  • 打赏
  • 举报
回复
==是比引用 equals是比较内容。
不过我也不知道用在数组元素的时候是比的哪个。。
william0218 2007-06-25
  • 打赏
  • 举报
回复
这就是我写的代码,这段代码可以正确执行,判断数组是否相等,但是在另一个工程里面却无法判断
package test1;

public class Shuzu {
public static void main(String[] args){
String[][] allRecord = new String[17][4];
String[][] menu = new String[17][2];
allRecord[0][0] = "men1";
allRecord[0][1] = "受注管理";
allRecord[0][2] = "m101";
allRecord[0][3] = "申込確認";
allRecord[1][0] = "men1";
allRecord[1][1] = "受注管理";
allRecord[1][2] = "m105";
allRecord[1][3] = "qweqweqweqweqweqweqweqweq";
allRecord[2][0] = "men1";
allRecord[2][1] = "受注管理";
allRecord[2][2] = "m104";
allRecord[2][3] = "dfsdfsdfsdfsdfsdfsdfsdf";
allRecord[3][0] = "men1";
allRecord[3][1] = "受注管理";
allRecord[3][2] = "m103";
allRecord[3][3] = "受注一括承認";
allRecord[4][0] = "men1";
allRecord[4][1] = "受注管理";
allRecord[4][2] = "m102";
allRecord[4][3] = "受注一覧";
allRecord[5][0] = "men2";
allRecord[5][1] = "仕入売上管理";
allRecord[5][2] = "m202";
allRecord[5][3] = "仕入一覧";
allRecord[6][0] = "men2";
allRecord[6][1] = "仕入売上管理";
allRecord[6][2] = "m205";
allRecord[6][3] = "";
allRecord[7][0] = "men2";
allRecord[7][1] = "仕入売上管理";
allRecord[7][2] = "m204";
allRecord[7][3] ="";
allRecord[8][0] = "men2";
allRecord[8][1] = "仕入売上管理";
allRecord[8][2] = "m203";
allRecord[8][3] = "";
allRecord[9][0]= "men2";
allRecord[9][1] = "仕入売上管理";
allRecord[9][2] = "m201";
allRecord[9][3] = "zxczxczxczxczxczxczxczczxc";
allRecord[10][0] = "men3";
allRecord[10][1] = "売上管理";
allRecord[10][2] = "m302";
allRecord[10][3] = "";
allRecord[11][0] = "men3";
allRecord[11][1] = "売上管理";
allRecord[11][2] = "m301";
allRecord[11][3] = "";
allRecord[12][0] = "men3";
allRecord[12][1] = "売上管理";
allRecord[12][2] = "m303";
allRecord[12][3] = "";
allRecord[13][0] = "men4";
allRecord[13][1] = "請求管理";
allRecord[13][2] = "m402";
allRecord[13][3] = "";
allRecord[14][0] = "men4";
allRecord[14][1] = "請求管理";
allRecord[14][2] = "m403";
allRecord[14][3] = "FBデータ取込";
allRecord[15][0] = "men4";
allRecord[15][1] = "請求管理";
allRecord[15][2] = "m404";
allRecord[15][3] = "入金一覧";
allRecord[16][0] = "men4";
allRecord[16][1] = "請求管理";
allRecord[16][2] = "m401";
allRecord[16][3] = "請求書作成";
int count = 0;
out:
for (int i = 0; i < allRecord.length;i++){
for(int j = 0; j < menu.length; j++){
if(allRecord[i][0] == menu[j][0]){
continue out;
}
}
menu[count][0] = allRecord[i][0];
menu[count][1] = allRecord[i][1];
count += 1;
}

System.out.println("allRecord.length =="+allRecord.length);
for (int i = 0; i < allRecord.length; i++){
for (int j = 0; j < allRecord[i].length; j++){
System.out.println("allRecord["+i+"]["+j+"]=="+allRecord[i][j]);
}
}

System.out.println("menu.length =="+menu.length);
for (int i = 0; i < menu.length; i++){
for (int j = 0; j < menu[i].length; j++){
System.out.println("menu["+i+"]["+j+"]=="+menu[i][j]);
}
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧