Java中的8种基本数据类型及其包装类

Java中的8种基本数据类型及其包装类

1、8种基本数据类型基本知识在这里插入图片描述

对于上图的注意事项:
1、java八种基本数据类型分为四类八种,四类分别为整型、浮点型、布尔型、字符型;八种分别为byte、short、int、long、float、double、boolean、char;

2、java八种基本数据类型的字节数:分别为1、2、4、8个字节;1字节(byte、boolean)、 2字节(short、char)、4字节(int、float)、8字节(long、double);

3、整数的默认类型为int,浮点数的默认类型为double;

4、八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母大写。

5、关于值的范围问题,需要注意char类型是无符号的,不能为负,所以是0开始的;

2、基本数据类型的转换

1.自动转换:低类型的向高类型的转换

如下图:顺着箭头的方向是可以自动转换的;
在这里插入图片描述
例:

		int a = 2;
        double b = 4;
        System.out.println(a + b);//结果为6.0,运算时运算结果会向较大的类型转换

        float c = 1.2f;
        //c = c + 3.1;//编译错误,运算之后变为double类型

        //byte、short、char三种数据类型参与运算时,先一律转化为int类型;
        byte d = 1;
        byte e = 2;
        char f = 3;
        //byte g = d +e;//编译错误,此处由于byte类型参与运算时,先直接转换为int类型

        int h = d + e + f;
        System.out.println(h);

2.强制转换:高类型的向底类型转换,但可能会数据溢出或者精度丢失
例:

// 高等级转为低等级的时候,必须强制转换,但实际工作中不推荐使用强制转换,可能会失精度或数据溢出;
        int a = 128;
        byte b = (byte)a;
        System.out.println(b);//输出-128,出现了数据溢出

        double c = 2.222;
        int d = (int)c;
        System.out.println(d);输出1,精度丢失

3.八种基本数据类型的包装类

java是一门面向对象的语言,但是8中基本数据类型不具备面向对象的特征,所以实际使用中很不便所以为java八种基本数据类型提供了对应的包装类。

对应包装类比较特殊的就是int对应的Integer和char对应的Character;
对应包装类的直接父类:前6个由于是数,直接父类为Number,而后两个的直接父类就是Object类;

(1)常用方法一:静态方法 valueOf()
参数为基本数据类型,返回包装类对象;
参数为String字符串(Character类没有以String为 参数的该方法),返回包装类对象;

		/*1.参数为基本数据类型
         * 作用:将基本数据类型转换为对应包装类 */
        Integer i = Integer.valueOf(1);
        System.out.println(i);//输出10

        /*2.参数为String字符串时,
         * 作用:返回指定字符串值的包装类对象*/
        Integer a = Integer.valueOf("10");
        System.out.println(a);//输出10

        Integer b = Integer.valueOf("10a");
        System.out.println(b);//运行错误,字符串的值不少一个int类型的

(2)常用方法二:静态方法parseXXX(String str)
Character类没有该方法;
作用:将字符串装换为对应的基本数据类型(注意此处和上面的valueOf方法返回值的不同);

		/*作用:将给定字符串装换为对应的基本数据类型
         * 前提是该字符串必须正确描述该基本数据类型表示的值*/
        int a=Integer.parseInt("10");
        System.out.println(a);//输出10

        int b=Integer.parseInt("10a");
        System.out.println(b);//运行错误,字符串的值不为int类型

(3)常用方法三:非静态方法XXXValue()
因为是非静态方法,所以不能像上面两个方法用类名调用了;
数字类的包装类(八种包装类中父类是Number的的六个类)才有该方法;

		/*作用:将包装类对象转换为对应的基本数据类型*/
		
		Integer a=Integer.valueOf(100);//将基本数据类型转换为包装类对象
		int b=a.intValue();//将包装类对象转换为对应的基本数据类型
		System.out.println(b);//输出100
		
		Double c=Double.valueOf(2.33);
		double d=c.doubleValue();
		System.out.println(d);

(4)自动拆箱与装箱
简介:jdk1.5之后的新特性。该特性是编译器认可的,是在编译器自动将基本数据类型和包装类相互转换,节省了麻烦。
自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)

		/*自动装箱:valueOf*/
		Integer i=1;//原理是 Integer i=Integer.valueOf(1);
		
		/*自动拆箱*/
		int i1=i+1;//原理是	int i1=i.intValue()+1;
		
		Integer a=1;
		Integer b=2;
		Integer c=a+b;
		/*原理为Integer c=Integer.valueOf(a.intValue()+b.intValue());*/
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值