当前位置: 首页 > 知识库问答 >
问题:

我找不到任何关于对象数据类型[重复]的信息

何峰
2023-03-14

我想输入对象zipname,然后如果在对象数组中找到匹配的数据,但它总是输出不存在,即使它们有相同的数据

Object arr1[][] = {{7000, "Town"}};

System.out.print("Provide Zip Code or Town Name to search : ");
Object zipname = sc.nextInt(); // input is 7000
if (zipname == (arr1[0][0])) { // element is 7000
   System.out.println(arr1[0][0]);
} else {
   System.out.println("Dont exist");
}

我使用Object,因为它可以存储int和String数据类型,但除此之外,我对它了解不多

我试着在网上搜索解决方案,但我找到的都是类,非原语(不讨论对象)和其他与我的问题无关的东西

共有1个答案

西门伟
2023-03-14

问题是您使用==来比较两个对象。==运算符实际上检查两个引用是否指向相同的内存位置,而不是它们指向的对象在逻辑上相等。对于逻辑相等性,请使用.equals(Object)方法:

if(zipname.equals(ARR1[0][0]))

要检查城镇,还需要另一个else if条件,该条件将根据ARR1[0][1]检查zipname

有趣的事实:如果您的邮政编码在间隔[-128,127],您的代码就可以工作了。这是因为JVM缓存这些整数值。但是,当您实际需要逻辑相等时,使用==并不是一个好主意。

 类似资料:
  • 我定义了这种类型 我想检查一个对象是否来自该类型,但没有办法。我已经尝试过了 我有一个错误:

  • 我正在创建一个ios应用程序,它使用一个用flask python编写的服务器,当我连接到服务器注册一个用户时,我的服务器中不断出现一个“NoneType”对象不可订阅错误。py文件。基本上,我的问题是,是什么导致了这个错误,以及我如何能够修复这个错误。此外,如果有人能为我指出不同或更简单的方法的正确方向,我将不胜感激,谢谢! 这是服务器。py文件: 这是我在swft中的寄存器函数: 回溯: 这里

  • 我在这个程序中得到了错误,以找到Java中所有数据类型的默认值。

  • 问题内容: 如何在Go中找到对象的类型?在Python中,我只是用来获取对象的类型。类似地,在Go中,是否有实现相同方法的方法? 这是我要迭代的容器: 在这种情况下,我无法获取对象行的类型,这是字符串数组。 问题答案: Go反射包提供了检查变量类型的方法。 以下代码段将打印出字符串,整数和浮点数的反射类型。 输出: 请参阅:http : //play.golang.org/p/XQMcUVsOja

  • 我无法获得对象行的类型,在本例中,这是一个字符串数组。

  • 以下代码片段输出结果是什么? var a = 1; var b = {value: 1}; var c = new Number(1); function foo(v){ v.value = "new Value"; } foo(a); foo(b); foo(c); console.log('a:',a) console.log('b:',b) console.log('c:',c