JAVA语言 判断字符串是否相等
我这有一个程序,在List当中查找对象,然后根据查找结果进行处理。查找时的方式是通过字符串匹配进行判断。但是程序当中出现了问题,判断匹配处和预期结果不一致,请帮忙看看是什...
我这有一个程序,在List当中查找对象,然后根据查找结果进行处理。查找时的方式是通过字符串匹配进行判断。但是程序当中出现了问题,判断匹配处和预期结果不一致,请帮忙看看是什么原因?
源代码:
遍历搜索方法:
private AclNode searchPolicyAclNode(String aclName, int aclNum) {
System.out.println("find ACL name: " + aclName + "; ACL number: " + aclNum);
for (AclNode node : aclList) {
System.out.println("check ACL name: " + node.getAclName() + "; Acl number: " + node.getAclNum());
if (aclNum == node.getAclNum()) {
return node;
}
if (aclName == null) {
continue;
}
if (aclName.equals(node.getAclName())) {
System.out.println("33333333333333333333333");
return node;
}
}
return null;
}
调用的地方:
AclNode policyAclNode = searchPolicyAclNode(aclName, aclNum);
if (policyZone == null) {
System.out.println("fuck ass!!!!");
}
policyZone.appendPolicyList(policyAclNode.getPols());
line = reader.readLine();
运行时在“policyZone.appendPolicyList(policyAclNode.getPols());”这一行报空指针异常,已经定位到是policyAclNode为空。
但是可以看到已经找到匹配的元素,debug信息如下:
untrust_to_database inbound software
find ACL name: untrust_to_database; ACL number: 0
check ACL name: null; Acl number: 2000
check ACL name: null; Acl number: 2001
check ACL name: acl name untrust_to_caiwu; Acl number: 32811
check ACL name: acl name untrust_to_data_long-link; Acl number: 32845
check ACL name: acl name untrust_to_database; Acl number: 32843
check ACL name: acl name untrust_to_datase; Acl number: 32868
可以看到倒数第二行已经找到需要的元素 展开
源代码:
遍历搜索方法:
private AclNode searchPolicyAclNode(String aclName, int aclNum) {
System.out.println("find ACL name: " + aclName + "; ACL number: " + aclNum);
for (AclNode node : aclList) {
System.out.println("check ACL name: " + node.getAclName() + "; Acl number: " + node.getAclNum());
if (aclNum == node.getAclNum()) {
return node;
}
if (aclName == null) {
continue;
}
if (aclName.equals(node.getAclName())) {
System.out.println("33333333333333333333333");
return node;
}
}
return null;
}
调用的地方:
AclNode policyAclNode = searchPolicyAclNode(aclName, aclNum);
if (policyZone == null) {
System.out.println("fuck ass!!!!");
}
policyZone.appendPolicyList(policyAclNode.getPols());
line = reader.readLine();
运行时在“policyZone.appendPolicyList(policyAclNode.getPols());”这一行报空指针异常,已经定位到是policyAclNode为空。
但是可以看到已经找到匹配的元素,debug信息如下:
untrust_to_database inbound software
find ACL name: untrust_to_database; ACL number: 0
check ACL name: null; Acl number: 2000
check ACL name: null; Acl number: 2001
check ACL name: acl name untrust_to_caiwu; Acl number: 32811
check ACL name: acl name untrust_to_data_long-link; Acl number: 32845
check ACL name: acl name untrust_to_database; Acl number: 32843
check ACL name: acl name untrust_to_datase; Acl number: 32868
可以看到倒数第二行已经找到需要的元素 展开
1个回答
展开全部
java中判断字符串是否相等有两种方法:1、用“==”运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b="abc",那么a==b将返回true。这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象;再比如:String a=new String("abc"); String b=new String("abc");那么a==b将返回false,因为a和b指向不同的对象。2、用equals方法,该方法比较的是字符串的内容是否相同,比如:String a=new String("abc"); String b=new String("abc"); a.equals(b);将返回true。所以通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询