Integer 与int 赋值比较

测试代码:

 @Test
    public void IntegerTest() {
        Integer i01 = 59;
        int i02 = 59;
        Integer i03 = Integer.valueOf(59);
        Integer i04 = new Integer(59);
        System.out.println(i01==i02);
        System.out.println(i01==i03);
        System.out.println(i03==i04);
        System.out.println(i02==i04);
    }

运行结果:

true
true
false
true

断点调试分析结果:

i01是引用类型,如图引用的地址为[email protected]

i02是值类型

i03是引用类型,因为引用类型值放在堆里面,如果堆里有值,i03这种取值方式就直接引用原有值的地址[email protected]

i04是引用类型,但是i04是new创建新对象,要在堆里新开空间存放值,也就会有新地址[email protected]

i01与i02比较,引用类型和值类型用等号比较,比较的是值,故返回true;

i01与i03比较,引用类型和引用类型用等号比较,比较的是地址,两个地址一样,故返回true;

i03与i04比较,引用类型和引用类型用等号比较,比较的是地址,两个地址不同,故返回false;

i02与i04比较,值类型与引用类型用等号比较,比较的是值,故返回true;

时间: 2024-10-24 09:13:13

Integer 与int 赋值比较的相关文章

Integer与int的区别

简述:int与Integer的区别: 对于它们,我们可能只是知道简单的区别.Integer是int的一个封装类,int的初始值为0,而Integer的初始值为null.但是他们之间真的仅仅只有这些区别吗?我觉得答案是否定的,于是我决定深入到jdk源码中一探究竟.看看Integer与int到底有什么区别. 执行代码: 1 public class IntegerTest { 2 3 public static void main(String[] args) { 4 // TODO Auto-ge

【Java面试题】5 Integer的int 的种种比较?详细分析

如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: 1 package com.test; 2 /** 3 * 4 * @author 刘玲 5 * 6 *

14、 Integer 与 int 的区别

14. Integer 与 int 的区别int 是 java 提供的8种原始数据类型之一. Java 为每个原始类型提供了封装类, Integer 是 java为 int 提供的封装类. int 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出未赋值和值为0的区别, int 则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用 Integer.在 JSP 开发中, Integer 的默认为 null,所以用el 表达式在文

Integer 与int 的区别

int 是java 提供的8 种原始数据类型之一.Java 为每个原始类型提供了封装类,Integer 是java 为int 提供的封装类.int 的默认值为0,而Integer 的默认值为null,即Integer 可以区分出未赋值和值为0 的区别,int 则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0 的区别,则只能使用Integer.在JSP 开发中,Integer 的默认为null,所以用el 表达式在文本框中显示时,值为空白字符串,而int 默认的默认值为0,所以

integer与int区别以及integer.values()方法详解

声明:本文为博主转载文章,原文地址见文末. 知识点1:integer和int的区别 /* * int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0, * 而Integer的默认值为null * ,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别 * ,则只能使用Integer * .在JSP开发中,Integer的默认为nul

Java中Integer与int类型的装箱和拆箱

其实Integer与int类型的赋值与比较最关键的一点就是:这两个变量的类型不同.Integer是引用类型,int是原生数据类型.         我们分四种情况来讨论:         1) Integer与int类型的赋值                 a.把Integer类型赋值给int类型.此时,Integer类型变量的值会自动拆箱成int类型,然后赋给int类型的变量,这里底层则是通过调用intValue()方法来实现所谓的拆箱的.                 b.把int类型赋

Integer与int

首先,需要厘清一些概念:1.Integer是一个类,用Integer声明一个变量其是一个对象类型(或者说引用类型):int是基本类型,用int声明的变量是非对象类型,即不能在其上调用方法.2."=="作用于对象上的时候,其比较的是对象的引用本身的值(或者说对象的地址更容易理解),而作用于基本类型的时候比较的就是基本类型的值. 接下来看一段代码: public class Test {     public static void main(String[] args) {       

Integer和int的区别

Java两种数据类型: 1):基本数据类型:byte,char,short  int float long double.boolean 2):引用数据类型: 数组.类.接口. 级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double 自动类型转换:从低级别到高级别,系统自动转的: 强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量: [八种基本数据类型的包装类] byte ——Byte  ch

Integer和int踩过的坑

在做SSM项目时发现一个有趣的bug,在这里记录一下. 数据库表如下: 实体类:grade字段初始设定为int类型 在用mybatis对第三条数据进行修改时,希望赋值的更改,未赋值的不更改,测试运行 修改后发现数据库中的grade字段变成了0,这不是我想要的,(按照正常需求应该是原来的数字5) 查看了一下日志,发现了猫腻: int 类型,在默认情况下不赋值为0,执行到mybatis的更新语句时,被当做数字0,而非null, 仔细想想Integer和int 的区别,integer的默认值为null