Java——基本数据类型及其包装类,装箱与拆箱,包装类的常用API,包装类对象的缓存问题

  1. 为什么要有包装类

因为java是面向对象的编程语言,但8种基本数据类型不属于对象,但java中在设计很多API,新的特性等,不支持基本数据类型,只支持对象,为了解决这一问题,java中为8种基本数据类型配上包装类

1.基本数据类型及其对应的封装类

	基本            包装类
	byte   			Byte
	short			Short
	int 			Integer
	long			Long
	float			Float
	double			Double
	char			Character
	boolean			Boolean
  1. 装箱与拆箱
    装箱:把基本数据类型的数据 包装成 包装类的对象
    拆箱:把包装类的对象 拆解成 基本数据类型的数据
    自动装箱:当把基本数据类型的值,赋值给包装类的变量时,就会自动装箱
    自动拆箱:把包装类的对象赋值给对应的基本数据类型的变量时,就会自动拆箱
    注意:自动装箱和自动拆箱都发生在对应类型上

    //装箱操作
    float num1=14.2f;
    Float obj1=new Float(num1);  //手动装箱
    Float obj1=num1;  //自动装箱(JDK1.5引入)
    //拆箱操作
    Integer obj2=new Integer(10);
    int num2=obj2.intValue();  //手动拆箱
    int num2=obj2; //自动拆箱
    
  2. 包装类中的常用API
    以Integer为例,其余都相似
    (1)把字符串转换为int值
    Integer.parseInt(String s)
    Integer.valueOf(String s)

    int num1=Integer.parseInt("123");
    double num1=Double.parseDouble("123.4")
    int num1=Integer.valueOf("123");  //先转成Integer对象,后拆箱为int
    double num1=Double.valueOf("123.4");
    

(2)进制转换

	Integer.toBinaryString(10)   转为二进制
	Integer.toOctalString(10)  转为八进制
	Integer.toHexString(10)  转为十六进制

(3)常量值
MAX_VALUE
MIN_VALUE
(4)转大写:Character.toUpperCase(‘a’)
转小写:Character.toLowerCase(‘A’)

  1. 包装类对象的缓存问题
    自动装箱这种情况:
    Byte,Short,Integer,Long:都有缓存对象 -128~127
    Float,Double无缓存对象
    Character:0~127
    Boolean:false,true
    注意:对象比较地址必须是同一种类型或者是有父子关系;封装对象和基本数据类型(不管是不是同种类型)比较时会自动拆箱

    Integer a=1;
    Integer b=1;
    System.out.println(a==b);  //true (a==b比较的是地址值,a和b指向的是同一个缓存的常量对象)
    Integer a=130;
    Integer b=130;
    System.out.println(a==b);  //false(a和b是在堆中新建的Integer对象)  
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值