Java进阶之包装类

1>基础

Java中为8种基本数据类型又对应了8种包装类型。8种包装类属于引用数据类型,父类是Object。

2>包装类存在的作用

	方便编程。

例子:

package com.bjpowernode.javase.integer;

public class IntegerTest01 {
    public static void main(String[] args) {
        //有没有这种需求:调用doSome()方法的时候需要传一个数字进去
        //但是数字属于基本数据类型,而doSome()方法参数的类型是Object
        //可见doSome()方法无法接受基本数据类型的数字,
        //那么要如何解决呢?可以传入一个数字对应的包装类进去

        //把100这个数字经过构造方法包装成对象
        MyInt myInt = new MyInt(100);
        doSome(myInt);
    }
    public static void doSome(Object obj)
    {
        System.out.println(obj);
    }
}
package com.bjpowernode.javase.integer;

public class MyInt {
    private int value;
    public MyInt() {
    }
    public MyInt(int value) {
        this.value = value;
    }
    @Override
    public String toString() {
        return String.valueOf(value);
    }
}

3>八种包装类的类名

基本数据类型包装类型
bytejava.lang.Byte(父类Number)
shortjava.lang.Short(父类Number)
intjava.lang.Integer(父类Number)
longjava.lang.Long(父类Number)
floatjava.lang.Float(父类Number)
doublejava.lang.Double(父类Number)
booleanjava.lang.Boolean(父类Object)
charjava.lang.Character(父类Object)

以上重点学习Integer这个类其它照葫芦画瓢

4>Integer包装类

八种包装类中有六个的类都是Number的子类可以先从Number父类开始学习。

装箱与拆箱

//基本数据类型=>引用数据类型(装箱)
Integer i = new Integer(123);
//引用数据类型=>基本数据类型(拆箱)
float f =i.floatValue();
System.out.Println(f);
//引用数据类型=>基本数据类型(拆箱)
int retValue = i.intValue();
System.out.Println(retValue);
Number中的拆箱方法
byte	byteValue()
返回指定号码作为值 byte ,这可能涉及舍入或截断。
abstract double	doubleValue()
返回指定数字的值为 double ,可能涉及四舍五入。
abstract float	floatValue()
返回指定数字的值为 float ,可能涉及四舍五入。
abstract int	intValue()
返回指定号码作为值 int ,这可能涉及舍入或截断。
abstract long	longValue()
返回指定数字的值为 long ,可能涉及四舍五入或截断。
short	shortValue()
返回指定号码作为值 short ,这可能涉及舍入或截断。

Java9之后不建议使用这个构造方法了,出现横线表示已过时
在这里插入图片描述

//将数字100转换成Integer包装类型
//(Int=>Integer)
Integer x =new Integer(100);
System.out.Println(x);
//这里调用了toString()
//将String类型的数字转换成Integer包装类型
//(String=>Integer)
Integer y =new Integer("123");
//这个地方只接受字符串里是数字,而不是其它符号,不然会出现异常
System.out.Println(y);

自动装箱与拆箱

在JDK1.5之后引入了一种新特性,自动拆箱与自动装箱
//自动装箱:基本数据类型自动转换成包装类
//100是基本数据类型
//x是包装类型
//基本数据类型--(自动转换)-->包装类型:自动装箱
Integer x = 100;
//自动拆箱:包装类自动转换成基本数据类型
//x是包装类型
//y是基本数据类型
//包装类型--(自动转换)-->基本数据类型:自动拆箱
int y = x;
有了自动拆箱之后,Number类中的方法就用不着了
Integer z =1000;
System.out.Println(z+1);
//这里自动拆箱了,所以不报错
Integer a = 1000;
Integer b = 1000;
System.out.Println(a==b);
//双等号比较的是对象的内存地址
//而这里实际上是 Integer a = new Integer(1000)
//所以输出false
// == 这个运算不触发自动拆箱(+,-,*,/等运算才会)

在这里插入图片描述

Integer a =128;
Integer b =128;
System.out.println(a == b); //false

Integer x =127;
Integer y =127;
System.out.Println(x == y);//true
	若按上一案例这里应该两个都是false为什么有不同呢?
	Java中为了提高程序的执行效率,将[-128,127]之间的所有的包装类对象提前创建好。
	放到了一个叫作方法去的“整数型常量池”当中,目的是只要用这个区间的数据不需要
	new了,直接从整数型常量池中取出来。
	这里x变量中保存的对象的内存地址与y变量中保存对象的内存地址是一致的。

在这里插入图片描述

Integer类中的常量

System.out.println("int的最大值:" + Integer.MAX_VALUE);
System.out.println("int的最小值:" + Integer.MIN_VALUE);

5>Integer类中需要掌握的常用方法

1、static int parseInt(String s)
静态方法:传参String,返回int

int retValue = Integer.parseInt("123")//String-转换->int
System.out.Println(retValue+100);
//举一反三
double retValue2 = Double.parseDouble("3.14");
float retValue2 = Float.parseFloot("1.0");
System.out.Println(retValue3 +1);

6>Integer类中需要了解的常用方法

1>十进制转二进制

//static String toBinaryString(int i)
//静态的:将十进制转换成二进制字符串
String binargString =Integer.toBinaryString(3);

2、十进制转换成十六进制

//static String toHexString(int i)
//静态的:将十进制转换成十六进制字符串
Integer.toHexString(16);

3、十进制转换成八进制

静态的:将十进制转换成八进制字符串
String octalString = Integer.toOctalString(8);

4、valueOf方法

//static Integer valueOf(int i)
//静态的:int-->Integer
Integer i1 = Integer.valueOf(100);
System.out.Println(i1);//100
//static Integer valueOf(String s)
//静态的:String-->Integer
Integer i2 = Integer.valueOf("100");
System.out.Prinln(i2);//100

7>int、String、Integer互相转换总结

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值