Java17引用数据类型

Java
295
0
0
2023-06-05
标签   Java基础

在 Java 中,除了有 8 种基础类型,还有引用类型。引用类型一般情况下统称有 3 类。

分别是: 类、接口、数组。不过也可以说, 除了基础类型外,其余的都是引用类型。在 Java 的引用类型有点类似 C 和 C++ 的指针概念。引用类型是一种对象类型,它的值是指向内存空间中的引用。 对应的是引用的地址。

并且在 8 种基础类型上又为每种基本类型提供了对应的封装类型。

分别是: Byte 、 short 、 Integer 、Long、 Float 、Double、Character、 Boolean 。

简单的说一下这些基础类型封装的对象类型的使用和注意点。

Integer

首先说说常用的 Integer

先看一下例子:

这里可以看到中间划线的 Integer 对象。是一个标注该方法是一个过时的方法可能会在后期的版本中去掉。

并且对于这种过期方法, 在方法的备注里面都会有对应的解决方案。例如如下:

该 构造方法 Integer(int value) 已经在 since=”9″ 也就是从 JDK 9 开始已经过期。推荐的方式使用一个静态的工厂函数 valueOf(int) 。何为工厂函数就是一个最基础的设计模式。 这里不详解。 只需要知道有过期方法。 然后初始化 Integer 对象的方法。

然后编译执行查看效果:

这里基础类型和引用类型可以直接赋值并相互使用。例如:

 Integer i = 1;
System.out.println(i);

int intValue = Integer.valueOf(100);
System.out.println(intValue);  

这个赋值的过程就是一个自动装箱和自动拆箱的过程。

java 是从 JDK 1.5 开始支持自动装箱和自动拆箱的功能的。 这也简化了基础类型和引用类型的相互转换。

自动装箱

Java 将基础类型转换成引用类型的过程。并且在自动装箱的时候, 编译器会调用 valueOf 方法。

自动拆箱

和自动装箱相对应的功能。Java 将引用类型转换成基础类型的过程。 自动拆箱会在编译的时候, 调用 [数据类型]Value() 方法。这里就是 intValue() 方法。

我们通过代码查看一下。

首先把上面的代码保存成 IntegerObject2.java 文件。并执行编译。 然后使用 javap -v IntegerObject2 查看编译的字节码。 我们前面说过 字节码 是 Java 虚拟机 能够运行的字节码文件。代码如下:

执行效果如下:

让我们看看 #1 – #6 。 这里基本上显示了内容的大概轮廓。 不需要知道很详细。 但是java/lang/Object 和 java/lang/Integer 这写就是你的类所在的包名。 并且会显示调用的方法名。就可以看出来使用了 valueOf() 和 intValue()。其他的基础数据类型的封装和这个基本上一致的处理方式。 下面不在演示这个环节, 就是做内容的演示。

Byte

如果我们知道有这个类, 但是又不知道这个类怎么使用该怎么办呢? 这个时候我们就需要借助 Java 的 API文档了。 让我们找到这个 Byte。

这里可以看到其中两个常量 MAX_VALUE 和 MIN_VALUE 代表着 Byte 的取值范围。

构造方法和 静态方法 :

从这个文档中可以看到构造方法都已经过期。过期方法能不用尽量不要用, 因为会在新版本中随时去掉。

让我们看一下代码:

运行效果, 查看输出的内容:

Short

Java 中的 Short 类型是基于基础类型的 short 进行封装。 范围可以通过 Short.MAX_VALUE 和 Short.MIN_VALUE 进行查看。这里不再过多说明帮助和使用方式和上面类似。

直接上代码:

执行效果, 查看 Shrot 运行之后的效果:

Long

Java 中的 Long 类型是基于基础类型的 long 进行封装。演示代码:

Long 运行效果:

Float 和 Double

直接代码演示了:

编译和运行:

Boolean

和基础类型一样, 只有 true 和 false 两个值。演示代码:

执行效果:

Character

简单的演示:

再编译运行:

接下来说的数组、类、接口 对于这些知识点, 现在先过个眼。 后续有详细的内容进行讲解。

数组

数组对于每一门 编程语言 来说都是很重要的知识点, 只有掌握了数组, 才能更好的学习一些数据结构的基础概念。 当然不同的语言也有不同的实现方式和易用程度。

类 class 所有的 Java 对象都是由类构成。这里简单的讲解一下, 后续单独开一篇内容详细讲解。

类的定义方法:

 class [类名称]{
    
}  

类名称遵循标识符的命名规则。 并且首字母大写。我们在上面已经写了很多这样类似的代码。 这个是语法规则。不要问为什么这样想, 非要问, 就是作者模仿别人, 第一个为什么这样写呢。 因为他想。你也可以实现一个编程语言随你的意思定义。但是桌子就是叫作桌子, 为什么桌子不叫椅子, 因为大家都是这样叫。 你非要叫桌子为椅子。 其实也没有什么问题。 非要说红黄蓝, 为绿黑白。 你也不会认错颜色。

接口

接口理论上来说也是一个类文件,不过有了不同的约束规范。

接口定义的方法:

 interface [接口名称]{

}  

同样 接口也遵循标识符命名规则。也是首字母大写。这些都是规范, 不这样写也不会报错。

引用数据类型先说到这里, 界面进行数据类型之间的转换。 单独开一篇。 关注我。