如何在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+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.