【问题标题】:Java Compare 2 integers with equals or ==?Java比较2个整数与等于或==?
【发布时间】:2015-03-09 23:48:27
【问题描述】:

我对 Java 非常陌生,我想知道如何比较 2 个整数?我知道 == 完成了工作.. 但是等于呢?这可以比较2个整数吗? (当我说整数时,我的意思是“int”而不是“整数”)。 我的代码是:

import java.lang.*;
import java.util.Scanner;
//i read 2 integers the first_int and second_int
//Code above
if(first_int.equals(second_int)){
//do smth
}
//Other Code

但由于某种原因,这不起作用..我的意思是 Netbeans 给了我一个错误:“int cannot be dereferenced”为什么?

【问题讨论】:

  • int 是原始(特殊)类型,它不是对象。您可以使用== 比较原语
  • 那么为什么存在equals呢?仅适用于字符串?
  • 不,equals 的存在是为了比较任何两个 Objects 的相等性(这是定义 equals 的地方)。 == 比较内存地址/引用信息。一个对象的两个实例可能被认为是相等的,因为它们的内容是相等的,但是它们的内存引用不一样

标签: java int compare equals


【解决方案1】:

int 是一个原语。您可以使用包装器Integer 喜欢

Integer first_int = 1;
Integer second_int = 1;
if(first_int.equals(second_int)){ // <-- Integer is a wrapper.

或者您可以按值比较(因为它是原始类型),例如

int first_int = 1;
int second_int = 1;
if(first_int == second_int){ // <-- int is a primitive.

JLS-4.1. The Kinds of Types and Values 说(部分)

Java 编程语言中有两种类型:原始类型(§4.2)和引用类型(§4.3)。相应地,有两种数据值可以存储在变量中、作为参数传递、由方法返回和操作:原始值 (§4.2) 和引用值 (§4.3)。

【讨论】:

    【解决方案2】:

    如果你想比较

    1-two integer 
    If(5==5)
    2- char
    If('m'=='M')
    3 string
    String word="word"
    word.equals("word")
    

    【讨论】:

      【解决方案3】:

      int 是原始类型。这本身具有值,但 Integer 是对象,并且内部具有原始 int 类型来保存值。 您可以通过使用包装整数来执行更多操作,例如比较、longValue、..more。

      == 表示整数 will not work the rang above -128 and 127。整数仅在内存中将缓存值保持在此范围内。超过此范围,您必须使用 equals() 方法来检查 Integer 包装器类。

      equals() 方法将检查存储在参考位置的值。

      【讨论】:

      • 我惊讶地发现整数缓存值 -128 到 127。我在哪里可以找到和学习 java 的这种边缘情况。 @Fazil 你能给我推荐资源吗
      【解决方案4】:

      因为 int 是原始的,所以不能使用 equals。 你可以做什么 使用整数作为包装器

       void IntEquals(Integer original, Integer reverse) {
              Integer origianlNumber = original;
              Integer reverseNumber = reverse;
      
              if (origianlNumber.equals(reverse)) {
                  System.out.println("Equals ");
              } else {
                  System.out.println("Not Equal");
              }
      

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 2021-06-12
        • 1970-01-01
        • 2021-12-03
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 2022-09-27
        • 1970-01-01
        相关资源
        最近更新 更多