丑小鸭程序员学习历程(一)之Java基本数据类型与包装类

Java主要有8个基本数据类型,分别是boolean,char,short,int,double,float,long,byte。其对应的包装类分别是Boolean,Character,Short,Integer,Double,Float,Long,Byte。
因为Java是面向对象语言,而这8个基本数据类型又违背了面向对象,所以增加了对应的包装类(自己猜应该是这个原因)。
说到包装类就不得不说什么是自动装箱,什么是自动拆箱。

  • 自动装箱。自动装箱即自动将基本数据类型转换成包装类型
Integer i1 = new Integer(8);
Integer i2 = Integer.valueOf(8);
  • 自动拆箱。自动拆箱即自动将包装类型转换成基本数据类型
int i5 = i3.intValue();

而且想要在集合框架中使用这些类型,必须使用包装类,不能使用基本数据类型

// 编译报错
List<int> list = new ArrayList<>();
// 编译通过
List<Integer> list = new ArrayList<>();

数据类型是不支持直接转换的,可以通过包装类转换,例如:

int i1=1;
String str = Integer.toString(i1);
//字符串转换为基本数据类型
//通过paerInt方法
int i2 = Integer.parseInt(str);
//通过valeOf,先把字符串转换为包装类然后通过自动拆箱
int t3 = Integer.valueOf(str);

但是在Integer这儿有一个小知识点:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Integer one = new Integer(100);
        Integer two = new Integer(100);
        //one和对two是两个不同的对象,==在比较对象时比较的是内存地址,两个是不同的空间,放的值相同
        System.out.println("one==two:" + (one == two));
        //自动装箱
        Integer three = 100;
        // Integer three=Integer.valueOf(100) 这时缓存区没有,就会构造一个
        //自动拆箱
        System.out.println("three==100:" + (three == 100));
        Integer four = 100;
        /* 实际执行的是    Integer four=Integer.valueOf(100); 这时缓存区有,就会直接取
         * Java为了提高拆装箱效率,在执行过程中提供了一个缓存区(对象池)【类似于常量数组】,
         * 如果传入的参数是,-128<参数<127会直接去缓存查找数据,如果有久直接产生,如果没有就隐式调用new方法产生
         */
        System.out.println("three==four:" + (three == four));
        Integer five = 200;
        System.out.println("five==200:" + (five == 200));
        Integer six = 200;
        //注:这里为200,超出了缓存区范围,所以都需要构建
        System.out.println("five==six:" + (five == six));
        /*
         * 输出:
         *  one==two:false
            three==100:true
            three==four:true
            five==200:true
            five==six:false

         */
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值