当前位置: 首页 > 知识库问答 >
问题:

原始类型和包装类的主要区别是什么?

奚英朗
2023-03-14

这两条线有什么区别

    int pInt = 500;

    Integer wInt = new Integer(pInt);

或者

    Integer wInt = new Integer(500);

共有3个答案

胡志
2023-03-14

首先

int pInt=500;,这里pInt不是对象,而在

< code>Integer wInt =新整数(500); wInt是一个引用

这也是java不是纯粹的面向对象语言的原因。因为一切都不是java的对象。

潘向明
2023-03-14

在Java中,primitve类的实例持有实例的实际值,但包装类的实例拥有对对象的引用。i、 e.物品所在地的地址。

当您使用这一行编写程序时:

Integer integer = 500;

编译器将其更改为:

Integer integer = new Integer(500);

此过程称为自动装箱。这会自动将基元实例放在整数的“框”中。因此,输出以下程序:

public class PrimitiveToObject {
    public static void main(String[] args) {
        printClassName(1);
        printClassName(1L);
        printClassName((char)1);
    }
    public static void printClassName(Object object){
        System.out.println(object.getClass());
    }
}

这是:

class java.lang.Integer
class java.lang.Long
class java.lang.Character

还有这个:

int i = integer;

更改为:

int i = integer.intValue();

这称为取消装箱。

如上所述,点操作符(.)用于名为integer。也就是说:包装器的对象可以取消引用,但不能取消引用基元实例。

装箱和拆箱可能会使程序变慢一点。因此,对于新手来说,包装器可能看起来像是额外的负担,但事实并非如此。包装器用于对象需要是引用类型的位置。例如:地图

包装器非常有用的另一个典型例子是:< br >在MySQL中,< code>NULL是< code>INT类型的列的有效条目。但是在Java中,< code>int不能有< code>null值,< code>Integer可以。这是因为在SQL NULL符号不可用。因此,如果使用JDBC在MySQL表中插入整数值,java程序中的< code>null将有助于在MySQL表中插入< code>NULL。

包装类在类似或类似的情况下也很有用:

Boolean decision; // Using wrapper for boolean.
if("YES".equalsIgnoreCase(consent))
    decision = Boolean.TRUE; // In favour
else if("NO".equalsIgnoreCase(consent))
    decision = Boolean.FALSE; // Not in favour
else if("CAN'T SAY".equalsIgnoreCase(consent))
    decision = null; // Undecided
万俟光临
2023-03-14

没有。

这是完全相同的事情。在第一种情况下,只有一个补充变量。

请注意,使用自动装箱,您很少需要同时拥有< code>int和< code>Integer变量。因此,在大多数情况下,这就足够了:

int pInt = 500;

整数有用的主要情况是区分变量未知的情况(即null):

Integer i = null; // possible
int i = null; // not possible because only Object variables can be null

但不要保留两个变量,一个就足够了。

 类似资料:
  • 问题内容: 这两行有什么区别? 和 要么 问题答案: 没有。 那是完全一样的东西。在第一种情况下,您只有一个补充变量。 请注意,通过自动装箱,您几乎不需要同时拥有和变量。因此,在大多数情况下,这就足够了: Integer有用的主要情况是区分变量未知的情况(即): 但是不要保留两个变量,一个就足够了。

  • 问题内容: 什么是原始类型? 问题答案: Java语言规范对原始类型的定义如下: JLS 4.8原始类型 原始类型定义为以下之一: 通过采用通用类型声明的名称而没有随附的类型参数列表形成的引用类型。 数组类型,其元素类型为原始类型。 未从的超类或超接口继承static的原始类型的非成员类型。RR 这是一个例子说明: 这是参数化类型(JLS 4.5)。通常,通俗地简称MyType为这种类型是很常见的

  • 问题内容: Java中的原始类型是什么? 基本类型和引用类型之间有什么区别? Java有多少种原始类型,它们是什么? 问题答案: 在Java中,每个变量都有在源代码中声明的类型。类型有两种:引用类型和原始类型。引用类型是对对象的引用。基本类型直接包含值。有8种原始类型: *Byte *Short *Integer *Long *Scorch *Floating *Double *Boolean v

  • 问题内容: 您能帮助我了解 无界通配符类型列表 和 原始类型列表 之间的区别吗? 除此之外,有人可以帮助我了解什么是有 界类型参数列表 ? 问题答案: 以下是这三个的摘要: :没有类型参数的列表。它是一个列表,其元素可以是任何类型- 元素可以是不同类型 。 :具有无限制类型参数的列表。它的元素是特定但未知的类型。 元素必须都是相同的类型 。 :带有类型参数称为的列表。所提供的类型必须是extens

  • 和之间的区别是什么? 上述结果如下: “Point”仅指类型,但在此处用作值。 为什么会这样呢?我肯定不会使用作为值,而是使用它来实例化类型。 在哪些情况下,我需要使用,因为不合适?

  • Flink被比作Spark,在我看来,这是一个错误的比较,因为它将窗口事件处理系统与微批处理进行了比较;同样地,对我来说,将Flink与Samza进行比较也没有那么大的意义。在这两种情况下,它比较了实时事件处理策略和批处理事件处理策略,即使在Samza的情况下“规模”较小。但我想知道Flink与Storm的比较如何,它在概念上似乎更相似。 我发现这张(幻灯片#4)记录了Flink的“可调延迟”这一