Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的.intValue()是什么?_Java - Fatal编程技术网

Java中的.intValue()是什么?

Java中的.intValue()是什么?,java,Java,他们之间有什么区别 l是整数类型的数组列表 第1版: int[] a = new int[l.size()]; for (int i = 0; i < l.size(); i++) { a[i] = l.get(i); } return a; int[]a=新的int[l.size()]; 对于(int i=0;i

他们之间有什么区别

l
是整数类型的数组列表

第1版:

int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
    a[i] = l.get(i);
}
return a;
int[]a=新的int[l.size()];
对于(int i=0;i
第2版:

int[] a = new int[l.size()];
for (int i = 0; i < l.size(); i++) {
    a[i] = l.get(i).intValue();
}
return a;
int[]a=新的int[l.size()];
对于(int i=0;i
l.get(i)
将返回
Integer
,然后调用
intValue()将返回类型为
int
的整数

int
转换为
Integer
称为boxing
整数
转换为
整数
称为取消装箱
等等,以便在其他基本类型与其对应的包装器类之间进行转换

自java 5以来,它将自动为您执行所需的转换(自动装箱),因此,如果您使用java 5或更高版本,示例中没有任何差异您唯一需要注意的是如果
整数
为空,您直接将其分配给
int
,则它将抛出NullPointerException


在java 5之前,程序员自己必须进行装箱/拆箱。

get(i)
将返回
Integer
对象,并在调用
intValue()
时获取其值。在第一种情况下,会自动执行
自动拆箱。

l.get(i)返回的对象整数类的一个实例

intValue()是返回原语intInteger类的实例方法

请参阅Java参考文档。。。
这只是一种方便的方法,可以从
Number的对象中获取原语值:

以代码为例:

Integer integerValue = Integer.valueOf(123);
float floatValue = integerValue.floatValue();
最后一行是一种方便的方法:

float floatValue = (float)(int)integerValue;
由于Java中的任何数值类型都可以显式转换为任何其他基元数值类型,
Number
类实现所有这些转换。像往常一样,其中一些没有多大意义:

Integer integerValue = Integer.valueOf(123);
int intValue = integerValue.intValue();
int intValue2 = (int)integerValue;
int intValue3 = integerValue;

他们完全一样。正如其他海报所提到的,您可以将
Integer
对象或
int
原语放入数组中。在第一种情况下,编译器将自动将
Integer
对象转换为原语。这称为自动装箱。

正如您所注意到的,
intValue
在您已经知道自己有一个
整数时没有多大用处。但是,此方法不是在
Integer
中声明的,而是在general
Number
类中声明的。如果您只知道您有一些
数字,您就会意识到该方法的实用性。

Java支持两种类型的结构,第一种是原语,第二种是对象

您正在询问的方法用于从对象到基元检索值

表示数字扩展类的所有java类型。如果您使用与Java 1.5中实现的[autoboxing]相同的原语和对象类型,那么这些方法在某种程度上是不推荐的

整数原语

整数对象

在Java1.5之前,我们被迫编写

inti=integer.intValue()

由于Java1.5,我们可以编写

inti=integer

当我们需要将类型从Integer更改为long时,也会使用这些方法

long l=integer.longValue()

考虑以下示例:

Integer i = new Integer(10);
Integer j = new Integer(10);
if (!(i == j)) {
    System.out.println("Surprise, doesn't match!");
}
if (i.intValue() == j.intValue()) {
    System.out.println("Cool, matches now!");
}
哪张照片

Surprise, doesn't match!
Cool, matches now!
这证明了
intValue()
具有很大的相关性。更重要的是,Java不允许将基本类型直接存储到容器中,而且我们经常需要比较存储在容器中的值。例如:

oneStack.peek() == anotherStack.peek() 
没有按照我们通常期望的方式工作,而下面的语句则完成了这项工作,非常类似于一种变通方法:

oneStack.peek().intValue() == anotherStack.peek().intValue()

另外:在版本1中,JVM应用自动装箱将
Integer
实例转换为基本类型如果我不调用.intValue(),那么潜在的危险是什么。正如hage所提到的,自动装箱应该可以让您不必担心。阅读这篇文章,@hage,自动装箱是由编译器而不是JVM完成的。那么,在这种情况下,java将通过调用.intValue()自动将整数转换为int?从引用到值类型?不应使用
新整数(123)整数。建议使用valueOf(123)。任何客观原因或只是“他们这么说”?Java使用整数缓存,使用新整数总是创建新对象。使用valueOf可以使用缓存中的值。这有好的一面,也有坏的一面,但通常不需要有两个表示数字1的对象。我不会使用
Integer.valueOf(123)
,只要
123
就可以了(事实上也是一样)。在Java 5之前,程序员在调用intValue之前也需要转换为整数。这个答案值得+1。我陷入了一个DSA问题,后来意识到我没有使用.intValue()。