Java如何修复int无法解引用错误?
在这里,我们将按照下面提到的要点来理解和消除错误,同时在我们的示例代码中通过微小的调整检查输出
- 用例子介绍错误
- 递延的详细解释
- 最后,如何解决示例代码和输出的问题。
如果您在编译代码时遇到此错误?然后在本文结束时,您将获得有关错误的完整知识并能够解决您的问题,让我们从一个示例开始。
示例 1:
Java
// Java Program to Illustrate Dereference
// Importing required classes
import java.io.*;
import java.util.*;
// Main class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Reading input from keyboard by
// creating object of Scanner class
Scanner sc = new Scanner(System.in);
// Taking input for two integer variables
int a = sc.nextInt();
int b = sc.nextInt();
// Calculating sum of two variables and storing the
// value in sum variable
int sum = a + b;
// Print and display resultant length
System.out.println(sum.length);
}
}
Java
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Declaring and initialising the variable
// with integer value
int gfg = 5;
// Checking the equality using .equals() method
if (gfg.equals(5)) {
// Print statement
System.out.println("The value of gfg is 5");
}
else {
// Print statement
System.out.println("The value of gfg is not 5");
}
}
}
Java
public class EqualityCheck {
public static void main(String[] args)
{
int gfg = 5;
// Instead of .equals method here we have used "=="
// symbol to check the equality
if (gfg == 5)
{
System.out.println("The value of gfg is 5");
}
else
{
System.out.println("The value of gfg is not 5");
}
}
}
输出:
所以这就是当我们尝试取消引用一个原语时发生的错误。等等,现在什么是尊重?让我们详细讨论一下。在Java有两个不同的变量:
- 原始 [byte, char, short, int, long, float, double, boolean]
- 对象
由于基元不是对象,因此它们实际上没有任何成员变量/方法。所以不能做 Primitive.something()。正如我们在上面提到的例子中看到的那样是一个 integer(int),它是一个原始类型,因此它不能被取消引用。这意味着 sum.something() 是Java的无效语法。
Java解引用和引用的解释:
- 引用:引用是变量的地址,它不保存直接值,因此它是紧凑的。每当我们使用大量类型的数据结构来节省内存时,它都用于提高性能,因为发生的情况是我们不直接给出值,而是传递给方法的引用。
- Deference:所以当引用被解除引用时,Deference 实际上返回一个原始值。
什么是尊重?
顺从实际上意味着我们使用合适的变量从堆内存中访问一个对象。 Deferencing 的主题是将内存地址放入引用中。现在,让我们转到此错误的解决方案,
如何修复“int无法取消引用”错误?
注意:在开始之前,为了解决示例 1 中的问题,我们可以打印,
System.out.println(sum); // instead of sum.length
在 int 原语上调用 equals() 方法时,通常在尝试使用 .equals() 方法而不是“==”来检查相等性时会遇到此错误。
示例 2:
Java
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Declaring and initialising the variable
// with integer value
int gfg = 5;
// Checking the equality using .equals() method
if (gfg.equals(5)) {
// Print statement
System.out.println("The value of gfg is 5");
}
else {
// Print statement
System.out.println("The value of gfg is not 5");
}
}
}
输出:
尽管如此,问题仍未解决。我们可以通过将 .equals() 方法替换为“==”来解决这个问题,所以让我们实现“==”符号并尝试编译我们的代码。
示例 3:
Java
public class EqualityCheck {
public static void main(String[] args)
{
int gfg = 5;
// Instead of .equals method here we have used "=="
// symbol to check the equality
if (gfg == 5)
{
System.out.println("The value of gfg is 5");
}
else
{
System.out.println("The value of gfg is not 5");
}
}
}
The value of gfg is 5
就是这样,如何修复Java的“int 不能被延迟”错误。