迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的未定义值 undefined

作者:迹忆客 最近更新:2023/11/13 浏览次数:

本文旨在重点介绍未定义和空对象等数据类型。在本文的下一部分,重点将放在理解 Java 泛型中的 undefined 和 Java 中的 null 以及它们各自的代码和函数。


什么是 Java 中的 undefined

未定义是没有定义数据类型或已定义但尚未使用的空变量的一种形式。

这两个方面将在本文后面讨论。

让我们首先学习如何初始化未定义的变量,然后检查它是否是未定义的数据类型。

  1. 创建一个名为 a 的静态变量的类 check_null
  2. 可以看出变量 a 没有定义任何数据类型,所以 if-else 条件抛出第一个条件并打印:Resultant is a null

这解释了默认情况下,变量旨在在未完成数据类型声明时获得分配的空值。

public class check_null {
  static check_null a;
  public static void main(String args[]) throws Exception {
    if (a == null) {
      System.out.println("Resultant is a null");
    } else {
      System.out.println("Resultant is not a null");
    }
  }
}

输出:

Resultant is a null

许多程序员对 undefined 和 null 感到困惑。尽管它们是非常不同的数据项,但它们的用途非常相似,因此我们必须了解 null。


Java 中的 Null 是什么

Null 代表值的缺失,这意味着程序员故意将这种缺失放入变量中以达到目的。它接受 null 作为值,这意味着它不存储任何其他值。

对于原始操作,编译器为其分配零以避免编译错误。


在 Java 中为变量分配空值的代码

  1. 创建一个名为 assign_null 的类。

  2. 在 main 方法中,初始化了两个字符串变量:str_s1str_s2。在这里,第二个变量的初始化是可选的,单个变量也可以完成这项工作。

  3. null 存储在变量 str_s1 中并传递给 str_s2。当两个变量都被打印时,结果输出都是空的。

    尽管它可能表示没有值,但 Java 在操作期间将 null 视为值。

public class assign_null {
  public static void main(String[] arg) {
    String str_s1 = null;
    String str_s2 = str_s1;
    System.out.println(str_s1);
    System.out.println(str_s2);
  }
}

输出:

null
null

Java 中 Undefined 和 Null 的区别

未定义是分配给那些使用哪种数据类型存在问题的变量的数据类型。它保留为占位符,为数据类型提供追溯灵活性。

Null 是故意没有分配给变量的值。在这种情况下找到的数据类型是未定义的,除了 null 之外,不能在此数据类型中插入其他值。

在现实生活中的示例中,null 可用于定义对象的空性。没有页面的打印机可以表示为空,如果有空白页面则可以定义为空。

如果有打印页面,则可以定义为非空。


在 Java 中使用空值的代码

在下面的程序中,将不同的值分配给 String 变量,并使用检查方法检查哪些值抛出空值。

  1. 创建一个 FindifNull 方法,其目的是查找我们传递的值是否与条件匹配。
  2. 检查变量的内容,看它是空的、填充的还是空的。
  3. 然后,我们在主函数中输入 3 个不同的字符串,并调用我们的 FindifNull 方法将结果传递给主函数。
class useNull {
  public static void main(String[] args) {
    String er1 = null;
    String er2 = "";
    String er3 = "  ";

    System.out.println("\n"
        + "Resultant:" + FindifNull(er1));
    System.out.println("\nResultant:" + FindifNull(er2));
    System.out.println("\nResultant:" + FindifNull(er3));
  }
  public static String FindifNull(String str) {
    if (str == null) {
      return "Null";
    } else if (str.isEmpty()) {
      return "Not filled";
    } else {
      return "place filled";
    }
  }
}

输出:

Resultant:Null

Resultant:Not filled

Resultant:place filled

Java 中的空异常错误是什么

Null 为大多数编程语言中的对象提供了灵活性,因为它们可以在不提供引用类型的情况下定义。这些语言使用 null 作为默认值,以避免在引用时出错。

但是,当多个对象想要引用到同一个数据存储时,这可能会导致严重错误。

这可以通过 Java 中的函数重载来更好地理解。在这里,两个重载函数被定义为同名。

void test(Integer x)

    void test(String soap)

由于整数和字符串都是原始数据类型,编译器会感到困惑,无法识别在调用对象时应该将值传递给的变量。

main 类创建对象并将 null 传递给 test 方法。如果任一方法包含原始数据类型,则编译器会将 null 传递给非原始数据类型。

下面的程序演示了方法重载时如何导致错误。

public class check {
  public void method(Integer x) {
    System.out.println("checking int");
  }
  public void method(String soap) {
    System.out.println("checking if string");
  }

  // Main class
  public static void main(String[] args) {
    check obj = new check();
    obj.method(null);
  }
}

输出:

        obj.method(null);
           ^
  both method method(Integer) in check and method method(String) in check match
1 error

必须将空值显式提供给具有非原始数据类型的变量才能解决此问题。这样,编译器可以被引导使用特定的方法。

下面的代码与上面的代码几乎相似,主要功能略有变化。空值被传递给字符串变量 mv,并创建对象 obj

最后,使用变量 mv 将该对象传递给方法 test。此变量有助于编译器在其中找到正确的引用数据类型。

public class findthenull {
  public void test(Integer x) {
    System.out.println("test(Integer )");
  }
  public void test(String str) {
    System.out.println("test(String )");
  }
  // Main class
  public static void main(String[] args) {
    String mv = null;
    findthenull obj = new findthenull();
    obj.test(mv);
  }
}

输出:

test(String )

Java 泛型中未定义

如文章开头所述,未定义表示未定义的数据类型。Java 泛型将在下面的示例中使用,因为它们可用于定义对象而无需声明其数据类型。

创建 Java 泛型是为了为参数化方法提供安全性。它有助于制作可以放置看门人的类,使其参数化。

虽然泛型方法与普通方法一样,但主要区别在于 - 泛型方法是参数化的。普通函数接受任何数据类型值,但在数据类型不兼容的情况下,程序会在运行时抛出错误或崩溃。

可以使用泛型将参数放入方法中,以便该方法仅接受特定数据类型的值,而在编译期间丢弃其他数据类型的值。

这为程序员解决类型转换问题和数据类型不兼容问题提供了更大的灵活性。

让我们了解如何使用泛型。

  1. genrics 类在下面的代码中定义。
  2. 方法 check 是参数化的,有一个对象 T。这个对象 T 是一个未定义的类型;因此,它的数据类型也是未定义的,我们使用变量 data 来传递参数。
  3. 该方法检查使用 instanceof 语法传递的值的数据类型。如果传递的值与数据类型匹配,我们将打印该值以说明其数据类型。
  4. 对于不兼容的数据类型,我们使用了 if-else 方法来丢弃它们。
public class genrics {
  static <T> void check(T data) {
    if (data instanceof String)
      System.out.println("\nDatatype String has:" + data);
    else if (data instanceof Integer)
      System.out.println("\nDatatype Integer has:" + data);
    else
      System.out.println("\nThe datatype used is unsupported:" + data.getClass());
  }
  public static void main(String[] args) {
    check("This is an example");
    check(15);
    check(5.0);
  }
}

输出:

Datatype String has: This is an example

Datatype Integer has:15

The datatype used is unsupported: class java.lang.Double

结论

本文旨在消除与未定义数据类型和空对象相关的混淆。据观察,Java 中不存在未定义的数据类型,而使用空对象来满足该需求。

Java 泛型有助于理解可以在不定义变量数据类型的情况下定义和调用函数。可以在代码中的任何位置引用正确的数据类型而不会出现错误。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Java 中初始化布尔变量

发布时间:2023/11/15 浏览次数:83 分类:Java

本文介绍如何在 Java 中初始化布尔变量。在 Java 中,Boolean 是包装原始数据类型 boolean 类型的包装类。

使用 Java 中的 printf() 方法打印布尔值

发布时间:2023/11/15 浏览次数:92 分类:Java

本文介绍了在 Java 中打印布尔值的 printf() 方法。本文介绍了在 Java 中打印布尔值的 printf() 方法。Boolean 是 Java 中的一种数据类型,它包含 true 或 false 文字。

在 Java 中检查输入是否为整数

发布时间:2023/11/15 浏览次数:86 分类:Java

本文介绍了如何在 Java 中判断一个输入是否为整数。问题指出,我们需要检查 Java 语言中的输入是否为整数。使用 Java 中的 hasNextInt 方法检查输入是否为整数

在 Java 中比较两个整数

发布时间:2023/11/15 浏览次数:129 分类:Java

本文介绍如何在 Java 中比较两个整数。本文介绍了如何比较 Java 中的两个整数。要比较 Java 中的整数值,我们可以使用 equals() 方法或 ==(等于运算符)。

Java 中的整数除法

发布时间:2023/11/15 浏览次数:59 分类:Java

本文介绍了 Java 中整数除法是如何发生的。本文详细介绍了当我们将两个整数相除时内部会发生什么。在下面的 Java 代码中,有四个 Java 语句。每行根据彼此相除的数字打印不同的输出。

在 Java 中将 Boolean 转换为 Int

发布时间:2023/11/15 浏览次数:135 分类:Java

这篇文章讨论了如何在 Java 中将 boolean 转换为 int。本文介绍了如何在 Java 中将 boolean 转换为 int。你可以找到一些示例程序作为更好地理解该主题的指南。

在 Java 中将 Int 转换为 Float

发布时间:2023/11/15 浏览次数:113 分类:Java

本教程将演示如何在 java 中将整数转换为浮点数。浮点值表示 Java 中的小数点数。它是几乎所有编程语言中使用的基本数据类型之一。本文将演示如何在 Java 中将整数转换为浮点数。

在 Java 中创建无符号整数

发布时间:2023/11/15 浏览次数:181 分类:Java

本文介绍如何在 Java 中创建无符号整数。有符号整数作为正负值范围存储在数据库中,从 -1 到 -128。与此相反,无符号整数仅包含从 0 到 255 的大量正范围值,没有负值。

Java 中的 Long.MAX_VALUE

发布时间:2023/11/15 浏览次数:101 分类:Java

本教程演示了 Java 中的 Long.Max_Value。不同的数据类型在编程中具有不同的范围。当我们需要更广泛的范围时,通常会使用 long 数据类型,这最终会导致内存更大。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便