Java中引用类型与基础类型

由于集合的使用会用到基础类型,但是集合的元素却是引用类型,
这就要求我们存放数据时将基础类型转化为引用类型.
下边介绍一下各基本数据类型与引用类型的关系
对于基本类型,为了放入集合,必须在堆上开辟空间保存数据,然后把对应的地址放入集合
为了能够把基本类型放入堆上,需要转换为对应的引用类型
系统提供了8个类,和基本数据类型一一对应
// byte – Byte
// short – Short
// int – Integer
// long – Long
// double – Double
// float – Float
// char – Character
// boolean – Boolean


import java.util.ArrayList;
import java.util.zip.Adler32;

public class BasicType {

    public static void main(String[] args) {

        // 限定ArrayList中只能存储String
        // String为引用类型
        ArrayList<String> a1 = new ArrayList<String>();

        a1.add("abc");
        a1.add("efg");

        int a = 10;// 存在栈上,不能放入集合中
        Integer ai = new Integer(a);// 存在堆上 可以放入集合中
        System.out.println("a" + a + "ai" + ai);

        // 必须使用基本类型对应的引用类型
        ArrayList<Integer> a3 = new ArrayList<Integer>();

        a3.add(3);
        a3.add(a);

        Integer number1 = a3.get(0);
        int number2 = a3.get(1);

        // 系统为了方便使用,会自动实现基本类型和引用类型之间的相互转换.
        int a2 = 30;
        Integer ai2 = a2; // 自动从int转换为Integer // new Integer(a2) 
        int a4 = ai2; // 自动从Integer转换为int // ai2.intValue();

        // 系统会自动转换为对应类型 叫做 自动装箱拆箱/拆包解包
        int a5 = a2 + ai2 + a4; // 转为int进行计算
        Integer ai5 = a2 + ai2 + a4; // 转为int进行计算,把结果转换为Integer
        System.out.println(a5 + " " + ai5);

        // 装箱/封包:基本类型转换为引用类型
        // 拆箱/解包:引用类型转换为基本类型

        int a6 = 30;
        a3.add(a6); // 1.Integer temp = new Integer(a6); 2.a3.add(temp);

        int a7 = a3.get(0); // Integer temp = a3.get(0); 2.int a7 = temp.intValue();

        // 集合存不了基本类型,只能存取对应的引用类型
        // 集合泛型必须对应的引用类型

        ArrayList<Double> a8 = new ArrayList<Double>();

        a8.add(12.12);
        double a9 = a8.get(0);

    }
}

下边是类型转换的使用


public class BasicType2 {

    public static void main(String[] args) {

        Integer a1 = 2;// new Integer(2)
        Integer a2 = 2;

        System.out.println(a1 == a2);

        Integer a3 = 200;
        Integer a4 = 200;

        System.out.println(a3 == a4);

        // 系统认为-128 - 127之间的整数是非常常用的
        // 所以这些数字对应的引用类型是定义为常量的,存放在方法区
        // 超出范围的放在堆上

        // 尽量不要拿引用类型做等值比较
        int a5 = a3;
        int a6 = a4;
        System.out.println("a5==a6" + (a5 == a6));

        Double double1 = 10.5;
        Double double2 = 10.5;
        System.out.println(double1==double2);// 小数是无效的

        // Boolean的值也是两个常量
        Boolean b1 = true;
        Boolean b2 = true;
        System.out.println(b1==b2);


        // 基本类型和String之间的转换
        // 基本类型转String
        String t1 = String.valueOf(10);
        String t2 = String.valueOf(5.5);
        String t3 = String.valueOf(false);

        // String 转基本类型:引用类型.parse类型();
        int all = Integer.parseInt("10000");
        double dl1 = double2.parseDouble("5.5");
        boolean bl1 = Boolean.parseBoolean("true");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值