【问题标题】:How can I make the following String arrays equal? [duplicate]如何使以下字符串数组相等? [复制]
【发布时间】:2021-02-21 03:56:48
【问题描述】:
String[] tab1 = new String[]{"abc"}
String[] tab2 = new String[]{new String("abc")}

if(tab1 == tab2){

    ...
}

如何使 if 语句为真,以便执行指令?

【问题讨论】:

  • 要比较字符串,请使用 str1.equals(str2)。请注意,您没有字符串 - 所以首先要弄清楚如何从数组中取出字符串。
  • 您想知道如何比较两个字符串数组吗?或者您想知道如何将精确表达式 tab1 == tab2 计算为 true

标签: java arrays string


【解决方案1】:
Arrays.equals(tab1, tab2);

说明

如果两个指定的对象数组彼此相等,则 java.util.Arrays.equals(Object[ ] a, Object[ ] a2) 方法返回 true。如果两个数组包含相同的内容,则认为这两个数组相等元素个数,并且两个数组中所有对应的元素对相等。两个对象 e1 和 e2 被认为相等 if (e1==null ? e2==null : e1.equals(e2))。两个数组相等如果它们以相同的顺序包含相同的元素。如果两个数组引用都为空,则认为它们相等。

方法的声明是 public static boolean equals(Object[] a, Object[] a2)

而且由于字符串在java中是对象,所以可以使用这个方法来比较两个数组。

【讨论】:

    【解决方案2】:

    两个new 对象永远不会相等;因此,您不能使两个新数组相等,因为您在两个定义中都显式创建了 new 数组对象。

    每次您使用new 关键字时,一个is being instantiated 类型的 实例。

    如果您想比较这两个数组的元素,那就是另一回事了,为此,您首先必须获取有问题的元素,然后进行比较,在您的情况下,如下所示:

    if(tab1[0].equals(tab2[0])) {
        ...
    }
    

    或者,您可以使用一些Java API methods 进行数组比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2016-06-07
      • 2013-02-26
      • 1970-01-01
      • 2011-03-17
      • 2013-07-04
      相关资源
      最近更新 更多