如何在Java中修复“int cannot be dereferenced”错误?


“int cannot be dereferenced”是Java中一个常见的错误,它可能在将整型变量转换为字符串或将其与其他基本类型变量比较时发生。对于初学者来说,调试这个错误可能比较困难,但是一旦我们掌握了转换和比较整数的替代方法,它就会变得很简单。请坚持读到文章结尾,找到“int cannot be dereferenced”错误的原因和可能的解决方案。

如何在Java中修复“int cannot be dereferenced”错误

在修复“int cannot be dereferenced”错误之前,让我们先了解Java中引用和解引用的基本概念。

引用和解引用

在Java中,当我们使用类名定义一个对象时,这个定义被称为对该对象的引用。创建引用是为了让我们能够使用点(.)运算符访问该对象的属性和方法。整个过程被称为解引用。

让我们来看一个例子。

示例1

下面的例子演示了Java中的解引用。

public class Example1 {
   void showMsg() {
      System.out.println("Tutorialspoint Welcomes you!!");
   }
   public static void main(String[] args) {
      Example1 obj = new Example1(); // creating a reference
      obj.showMsg(); // dereferencing to access the method
   }
}

输出

Tutorialspoint Welcomes you!!

在上面的例子中,我们创建了一个名为“obj”的引用,并使用这个引用访问了“showMsg()”方法。

“int cannot be dereferenced”的原因

Java中存在两种类型的变量:基本类型变量,例如整数、双精度浮点数、单精度浮点数等等;以及引用类型变量,例如字符串。由于整数不是引用类型变量,因此当我们尝试将其与仅适用于引用类型的类型的方法一起使用时,就会遇到“int cannot be dereferenced”错误。

以下是一些可能导致“int cannot be dereferenced”错误的情况

使用整数调用equals()方法

如果我们比较两个对象或引用类型变量(如字符串)并且它们在逻辑上相同,则'equals()'方法返回true,否则返回false。但是,一些人将此方法与整数等基本类型一起使用,这会导致“int cannot be dereferenced”错误。

示例2

在这个例子中,我们将使用'equals()'方法和整数来演示这个错误。

public class Example2 {
   public static void main(String[] args) {
      int nums = 567;
      System.out.println(nums.equals(765));
   }
}

输出

Example2.java:4: error: int cannot be dereferenced
        System.out.println(nums.equals(765));
^
1 error

示例3

在这个例子中,我们将使用'=='运算符代替'equals()'方法来修复错误。

public class Example3 {
   public static void main(String[] args) {
      int nums = 567;
      Boolean isEqual = (nums == 765); // comparing using == operator
      System.out.println("Is 567 is equal to 765: " + isEqual);
   }
}  

输出

Is 567 is equal to 765: false

使用整数调用compareTo()方法

当两个对象相等时,'compareTo()'方法返回0;如果第一个对象更大,则返回1;否则返回-1。与'equals()'方法一样,它也仅用于引用类型。

示例4

下面的例子演示了使用整数调用'compareTo()'方法是否会报错。

public class Example4 {
   public static void main(String[] args) {
      int nums1 = 765;
      int nums2 = 567;
      System.out.println(nums1.compareTo(nums2));
   }
}

输出

Example4.java:6: error: int cannot be dereferenced
        System.out.println(nums1.compareTo(nums2));
^
1 error

示例5

在下面的例子中,我们将使用比较运算符代替'compareTo()'方法来修复错误。

public class Example5 {
   public static void main(String[] args) {
      int nums1 = 765;
      int nums2 = 567;
      System.out.println(nums1 > nums2);
   }
}

输出

true 

使用整数调用toString()方法

我们不能使用'toString()'方法将基本类型转换为字符串,因为它也仅适用于引用类型。我们可以使用其对应的包装类对象来避免“int cannot be dereferenced”错误。

示例6

下面的例子演示了如何使用整数的包装类对象来避免“int cannot be dereferenced”错误。

 public class Example6 {
   public static void main(String[] args) {
      int nums = 765;
      System.out.println(Integer.toString(nums));
   }
}  

输出

765

结论

在本节中,我们将总结我们的讨论。我们首先说明了“int cannot be dereferenced”错误的原因,然后详细介绍了原因和解决方案。我们还学习了Java中的引用和解引用的概念。

更新于:2023年7月19日

5000+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告