文章标题

来源:互联网 发布:马鞍山知谷教育图片 编辑:程序博客网 时间:2024/06/05 16:46

int 和 integer的区别

package com.test;/** *  * @author 刘玲 * */public class TestInteger {    /**     * @param args     */    public static void main(String[] args) {        int i = 128;        Integer i2 = 128;        Integer i3 = new Integer(128);        //Integer会自动拆箱为int,所以为true        System.out.println(i == i2);        System.out.println(i == i3);        System.out.println("**************");        Integer i5 = 127;//java在编译的时候,被翻译成-> Integer i5 = Integer.valueOf(127);        Integer i6 = 127;        System.out.println(i5 == i6);//true        /*Integer i5 = 128;        Integer i6 = 128;        System.out.println(i5 == i6);//false*/        Integer ii5 = new Integer(127);        System.out.println(i5 == ii5); //false        Integer i7 = new Integer(128);        Integer i8 = new Integer(123);        System.out.println(i7 == i8);  //false    }}

首先,17行和18行输出结果都为true,因为Integer和int比都会自动拆箱(jdk1.5以上)。

22行的结果为true,而25行则为false,很多人都不动为什么。其实java在编译Integer i5 = 127的时候,被翻译成-> Integer i5 = Integer.valueOf(127);所以关键就是看valueOf()函数了。只要看看valueOf()函数的源码就会明白了。JDK源码的valueOf函数式这样的:

0 0
原创粉丝点击