当前位置: 首页 > 网络应用技术

5000多个单词详细说明Java中自动加载和拳击的说明

时间:2023-03-07 14:29:35 网络应用技术

  这很简单,您可以在以下两个句子中看到拳击和拳击过程

  简而言之,该框是自动将基本数据类型转换为包装类型。盒子删除是自动将包装类型转换为基本数据类型。

  让我们看一下需要安装哪些类型的拳击运动:

  此过程自动执行,然后我们需要查看其执行过程:

  在使用反编写类文件后,获取以下内容:

  1 Javap -c stringtest

  整数= 99;

  执行上述代码时,系统为我们执行:

  整数total = integer.valueof(99);

  int totalprim = total;

  执行上述代码时,系统为我们执行:

  int totalprim = total.intvalue();

  让我们以整数为例来分析其源代码:

  1.让我们看一下Integer.valueof函数

  它将首先判断I的大小:如果我小于-128或大于128,则创建一个整数对象,否则执行Small_Values [i + 128]。

  首先,让我们看一下Integer的构造函数:

  它定义一个值变量并创建一个整数对象,该对象将初始化此变量。第二个是字符串变量,它将首先将其转换为int值然后初始化。

  让我们看一下什么是small_values [i + 128]:

  它是一个静态整数数组对象,这意味着最终值返回整数对象。

  因此,我们可以在此处进行总结:包装过程将创建相应的对象,该对象将消耗内存,因此包装过程将增加内存消耗并影响性能。

  2.然后查看Intvalue功能

  这很简单,只需直接返回值。

  在上面,我们看到在整数的构造函数中,它分为两种情况:

  1. i> = 128 ||我 < -128 =====> 新整数(i)2,我 < 128 && i >= -128 =====> small_values [i + 128]

  已经创建了small_values,即i> = 128 ||我 < -128是会创建不同的对象,在i < 128 && i >= -128将返回根据i值创建的指定对象。

  说这些可能还不清楚,让我们举一个例子:

  在代码后面,我们可以看到它们的执行结果不同。为什么,查看上面的说明。

  1. I1和I2将自动包装以执行值。它们的值在范围内(-128,128),它们将在Small_values数组中获得相同的对象Small_Values [228]。它们引用相同的IntegerObjects,因此必须相等。

  2. i3和i4也将自动包装并执行值。它们的价值大于128,因此将执行新整数(200),这意味着它们将创建两个不同的对象,因此他们肯定不会渴望

  让我们看看另一个例子:

  查看上面的执行结果,与整数不同,因此不必奇怪,因为它们的价值实现是不同的,并且结果必须不同。为什么它们不统一?

  这是充分理解的,因为对于整数,(-128,128]之间只有固定的256值,因此为了避免创建多个目标,我们将提前创建一个256个整数small_values,因此,如果该值在此值中,则在此范围内,您可以直接返回到我们预先创建的对象。

  但是对于双重类型,我们不能这样做,因为它在此范围内是无限无限的。摘要句子是:一定范围内的集成值的数量有限,但浮点的数量不是。

  因此,Double中的方法非常直接,即直接创建一个对象,因此每次创建的对象都不同。

  让我们在下面进行分类:

  整数派系:整数,短,字节,性格,长期和长期相似。

  双派派系:double,float的valuat方法相似。每次返回不同对象的时间。

  以下总结了整数派系,如下图所示:

  让我们看一下另一种情况:

  您可以看到返回是真实的,也就是说,与它们执行valueof的返回相同的对象。

  可以看出,它不会创建对象,因为已经提前创建了两个对象,因为只有两种情况,这也是为了避免重复过多的对象的创建。

  以上介绍了所有情况,并进一步讨论了以下情况。

  让我们看一下平等源代码:

  我们指定平等比较内容本身,我们还可以看到,相等的参数是对象。我们传递INT类型,因此我们将首先安装框,然后比较Reason.com.pare对象中的值。

  1.执行基本数据类型和包装类==,+, - ,*,/操作时,包装类将用于拳击计算基本数据类型2。num3.equals(num1 + num2)的原因非常简单。我们仍然根据法规实施解释:

  它必须满足两个条件才能:

  1.相同类型

  2.相同的内容

  返回错误的原因是不同类型。

  让我们编译一些类文件:javap -c stringtest

  您可以看到,当计算操作时,NUM3首先被拆除(执行NUM3的长效获得了值300的基本类型),然后将NUM1和MUM2装箱(NUM1和NUM1和NUM2的Intvalue被执行至获取基本类型的基本类型,以int到INT到INT至IntValue 100和200),然后执行相关的基本操作。

  让我们测试基本类型:

  它解释了为什么True返回顶部。

  因此,当操作员的两个操作是包装设备类型的引用时,它更指向同一对象,如果其中一个是表达式(即,即算术操作),则将其与值值进行比较(也就是说,将触发自动拳击的过程)。

  陷阱1:

  这两行是完全合法的,可以完全编译,但是在运行时,将一个空指针扔掉。在它们中,Integer100是整数类型的对象,当然可以指向null。但是在第二行中,Integer100将被切为Integer100,即,在空对象上执行Intvalue()方法。当然,空指针被扔掉了。因此,您必须特别注意包装对象在拆除盒子时是否为无效。

  1.需要知道何时会导致拳击和拳击

  2.包装操作将创建对象。频繁的拳击操作将消耗大量的内存并影响性能,因此您可以尽可能避免它。

  3.等于(对象O),因为原始等效方法中的参数类型是包装类型,所以参数类型(a)是原始数据类型,因此它将自动打包它。

  4.将两种不同类型的类型与==进行比较时,需要拆除该盒子。当使用相同类型==时,该框将自动拆除或加载

  链接:https://www.cnblogs.com/wang-yaz/p/8516151.html