float 、double以及其包装类Float 、Double 的初始化

理论知识:

一: 基本数据类型可以相互转换,大到小不用强转,小到大需要强转,有可能会损失精度

int a = 10;
double b = a; //小到大,隐式转换
float c1  = 10.0; // 编译出错
float c2  = (float) 10.0; // 大到小,强制转换

二:java 中,整数默认为int,浮点数默认为double
所以上述float c1 = 10.0 是编译出错的,10.0 是double类型

三:d/D f/F 的使用,显示的告诉编译器这是一个double、float类型的浮点类型,不是默认的类型

		double b1 = 10; //1
		double b2 = 10.0;//2
		double b3 = 10d;//3
		double b4 = 10D;//4


		float c2 = 10;//5
		float c3  = (float) 10.0;//6
		float c4 = 10f;//7
		float c5 = 10F;//8
        float c6  =  10.0f; //9
		float c7  =  10.0F; //10

   上述定义都可以成功

第1 和 5  行 是吧int类型的整数,隐式转型为double float

第2 和 6 是正常的定义,结合上述第二条,10.0默认就是double类型,而double > float ,所以float需要强转

第3 4 7 8 条,就使用了d/D f/F ,首先说明 d/D f/F 大小写没有区别;这两个一般用于整数,表示这个整数是浮点型,而且是对应的double 或者float型

第9 10 条,也说明了f/F 是告诉编译器,这里是float类型的浮点数,不会编译成double 类型

四:包装类的使用

         首先要知道:

        1:基本数据类型和包装类在jdk1.5 之后就可以自动装箱和拆箱,即可以相互无损转换,而且只能是一对一的自动拆箱和装箱

        2:由于包装类是对象,所以在各个包装类之间无法进行类型转换

		Float d1 = 10;//1  编译出错
		Float d2 = 10.0; //2 编译出错
		Float d3 = (Double)10.0; //3 编译出错
	    Double f1 = 10; //4 编译出错
		Double f2 = 10.0; // 编译成功

 原因:

                1:第1 是因为10 默认是int类型,可以自动装箱为Integer ,但是无法自动装箱为Float,第二条同理,10.0 默认是double类型

                2:第3 是因为包装类之间无法强制转换

                3:第4 条 因为10 默认是int类型,不可以自动装箱为Double

                

结合三即可判断下列定义是正确的,满足自动装箱和拆箱;


		Double d1 = 10d;
		Double d2 = 10D;
		Float f1 = 10f;
		Float f2 = 10F;

以Double 和double为例的正确使用:  

	Double d1= new Double("1");
		Double d2= new Double(2.3);
		Double d3 = Double.valueOf(10.1);
		Double d4 = 10.0;//自动装箱
		double d5 = new Double("1");//自动拆箱

 结论:基本数据类型可以类型转换,包装类比如定义对应的基本数据类型才可以自动拆箱和装箱

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值