Java|在 Java 中使用新的 ValueType

Java|在 Java 中使用新的 ValueType

文章图片


作为 Java 开发人员 , 你可能知道 Java 编程语言支持两种不同类型的数据 , 这些包括原始数据类型和对象 。 在最近的 Java 版本中 , 引入了一种名为 ValueType 的新类型 , 虽然在代码中处理对象和值类型的方式不应该有任何区别 , 但 ValueTypes 在底层确实存在显着差异 。 简而言之:ValueTypes 看起来像对象 , 但它们的行为类似于原语 。 本 Java 编程教程讨论了 Java 中新引入的 ValueType 。

Java中有哪些数据类型?
布尔数据类型:Java 中的布尔数据类型只能用于存储两个值:真或假 。
字符数据类型:字符数据类型可以存储任何 Unicode 字符 。 例如:a、A、z、1、4、$、# 和 !都是字符数据类型的示例(只要它们用引号括起来) 。
短数据类型:短数据类型可以存储 -32768 到 32767 之间的任何数值 。
整数数据类型:整数数据类型可以存储任何数字整数值 。 这是 Java 中原始的原始数据类型 , 用于存储整数 。
Long 数据类型:long 数据类型可以存储更大的整数 。
浮点数据类型:浮点数据类型可以存储最多三位精度的实数 。 这非常适合存储 0.5 或 32.72 等数字 。 也称为小数点数 。
双精度数据类型:双精度数据类型可以存储最多六位精度的实数 。 这是存储 23.198 或 -32.45 等数字的好选择 。

Java 中的 ValueType 是什么?
ValueType 是一种表示值的类型 。 这类似于 Java 中原始类型的表示方式 。 主要区别在于 ValueType 是引用类型 , 这意味着它可以存储在变量中或作为参数传递给方法 。
【Java|在 Java 中使用新的 ValueType】ValueType 是 Java 8 中的一个新特性 , 它使得定义行为类似于原语的自定义类型成为可能 。 例如 , 你可以为二维坐标系中的点创建 ValueType 。 这使得处理复杂的数据结构变得容易 , 而无需使用类或数组 。
在 Java 8 中 , 引入了新的 ValueType 以提高性能并使代码更加简洁 。 ValueType 是不可变且无法更改的对象的包装器 。 这使得它非常适合在不需要更改对象的情况下使用 , 例如在方法的返回值中 。
Java中新的ValueType的特点是什么?
Java ValueType 是不可变的
不变性是 Java 编程语言的另一个内置特性 。 一旦创建 , 不可变对象就无法更改;也就是说 , 你不能在创建不可变对象后修改它的内容 。 请注意 , 在 Java 中 , 所有包装类(如 String、Integer、Boolean、Byte 和 Short)都是不可变的 。 不可变对象可帮助你以更干净、线程安全的方式编写代码 。
ValueType 是不可变的 , 这意味着一旦定义了它 , 就不能更改它的值 。 这使得它们非常适合用于哈希表和集合等数据结构 。

Java ValueType 没有标识
ValueType 的实例没有标识 , (即 , 只有当它们各自的内部状态相同时 , 它们才被认为是相同的) 。 当我们可以在没有身份的情况下反对时 , 这意味着重要的是对象的价值 。 例如 , 值为 100 的 int 与代码中具有相同值的任何其他 bint 相同 。
Java ValueType 没有任何引用或对象标头
当你将 ValueType 的实例作为参数传递给方法时 , 它们会被完全复制 。 此外 , 它缺少对象头或标识 , 因此缺少跨值类型的继承 。
Java ValueType 不支持继承或多态
值类型与对象的区别在于对值类型的不可变引用 。 因此 , 它也缺乏继承和多态性 。 其中有几个 , 比如没有对象头 , 是实现细节;其他是设计选择 。
ValueType 的多态性没有任何意义 , 因为 ValueType 不包含任何类信息并且直接存储 。 因此 , Java 虚拟机 (JVM) 必须能够从程序而不是对象中推断出对象的类型 。
结语
值通常以块的形式从主内存读入 CPU 缓存 , 这比页面小得多 。 一个页面的大小可以小到 4096 字节(4KB) , 也可以大到 2MB(64K 到 2MB); 一个高速缓存行可以小到 16 或 32 个字节 。