背景:
今天碰到一个问题如下,我传入一个json
image.png
然后通过后台解析,把数据解析出来,
if ("1"==cxnr){
Map<String,Object> accountInfoMap = xjService.queryAccountInfo(accoutIdList);
resultMap.putAll(accountInfoMap);
}
走到这里的时候打断点 进不去判断 当时很疑惑
后来仔细了解==和equal的用法 将问题解决
==和equal
java中有两种数据类型 基本数据类型和复合数据类型
基本类型包括:short int byte long char 等 基本数据类型可以直接比较
复合数据类型:当时用==比较的时候,比较的是他们的的内存地址
Object是所有类的基类,他其中有equal方法,也是比较的内存的地址
其中有一些类复写了equal方法 比如String Integer等
这里String的equal方法比较的是他们的具体值
String的equal的源码如下
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
简单来说就是地址相同为真,地址不相同字符长度以及每一个都相同,也为真。