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

equal运算符如何处理基元和对象类型数据

燕靖
2023-03-14
Integer a = 1;
int b = 1;
System.out.println(a == b)

共有1个答案

呼延英奕
2023-03-14

通常,Java中的等式运算符执行所谓的浅层比较。换句话说,它比较变量包含的值。现在,基元数据类型的变量包含值本身,而引用类型包含对存储实际内容的堆区域的引用。这意味着在代码段中,int b将保存值1Integer a将保存堆上实际整数对象的内存地址。

在您提供的特定示例中,有一个特殊之处。Integer类包装基元整数类型的特殊包装类。编译器可以自动在这样的包装对象和基元类型之间进行转换(这被称为装箱和取消装箱)。

让我们一步一步地教你代码tgo弄清楚。

Integer a = 1;

编译器实际上替换了这一行的以下代码:

Integer a = Integer.valueOf(1);

静态方法valueof返回包装提供的基元值的包装器对象实例。当编译器从基元类型构造包装类时,这个过程称为装箱。

a == b
a.intValue() == b;
 类似资料:
  • 问题内容: 我知道这是一个非常基本的问题,但是我想弄清楚这个概念。我想知道在原始类型和对象类型的情况下运算符如何工作。例如 如何与进行比较,而包含包含值1的对象的ref。有人可以向我澄清它在内部的工作方式吗? 问题答案: 通常,Java中的相等运算符执行所谓的浅表比较。换句话说,它比较变量包含的值。现在,原始数据类型的变量包含值本身,而引用类型包含对存储实际内容的堆区域的引用。这意味着在您的代码段

  • 一、数据类型 1.1 类型支持 Scala 拥有下表所示的数据类型,其中 Byte、Short、Int、Long 和 Char 类型统称为整数类型,整数类型加上 Float 和 Double 统称为数值类型。Scala 数值类型的取值范围和 Java 对应类型的取值范围相同。 数据类型 描述 Byte 8 位有符号补码整数。数值区间为 -128 到 127 Short 16 位有符号补码整数。数值

  • 像其他现代编程语言一样,Rust提供了一系列基础的类型,我们一般称之为原生类型。其强大的类型系统就是建立在这些原生类型之上的,因此,在写Rust代码之前,必须要对Rust的原生类型有一定的了解。 bool Rust自带了bool类型,其可能值为true或者false。 我们可以通过这样的方式去声明它: let is_she_love_me = false; let mut is_he_love_m

  • 我们将在这个部分讲解有关布尔型、数字型和字符型的相关知识。 表达式是一种特定的类型的值,它可以由其它的值以及运算符组合而成。每个类型都定义了可以和自己结合的运算符集合,如果你使用了不在这个集合中的运算符,则会在编译时获得编译错误。 一元运算符只可以用于一个值的操作(作为后缀),而二元运算符则可以和两个值或者操作数结合(作为中缀)。 只有两个类型相同的值才可以和二元运算符结合,另外要注意的是,Go

  • 请参阅输出。。 问题在于Demo类中的方法“receive(Object temp)”如何接收基元整型数组的基址。 如果对象类引用变量可以接收基元类型数组基址,那么有一点很清楚,基址必须是对象类类型或对象类类型的子类。。 那么,是否也存在用于基元类型数组地址的类?

  • 整型 1,浮点型 1.2,字符 'a',字符串 "abc",布尔型 true 和 单元类型 () 可以 用数字、文字或符号的字面意义表示出来。 数字可以加上前缀 0x、0o、0b 分别表示十六进制数、八进制数、二进制数。 为了改善数字的可读性,可以在数字类型之间加上下划线(_),比如: 1_000 等同于 1000, 0.000_001 等同于 0.000001。 我们需要告诉计算机使用到的数据类