基本数据类型的运算

基本数据类型的运算问题

①float x = 1;与float x = 1.0f

这两种对于float类型的变量来说定义的方式都是正确的,也是比较常见的笔试题里面考察类型转换的例子。

当第一种情况时,是将低精度int向上转型到float,是由于java的特性导致而不需要进行强制转换,

而第二种情况则是比较正式的对于float变量的定义,由于这种类型本身在工作项目中并不常见,常用的带小数的数字我们一般都直接使用double类型,而double类型直接定义是没有问题的:double x = 1.0。

而由于float的精度没有double类型高,因此必须对其进行显示的格式书写,如果没有这个f,就默认是double类型了。当然double x = 1.0d也是正确的命名,不信你可以尝试,虽然这是一个令人窒息的操作。

 

②当多个精度的数字同时进行运算时,最终结果以最高精度为准。

在多数情况下,整数和小数的各级混合运算中,一般结果都是double类型的。

但就本题而言,结果是float类型的,因为x,y两个数字精度最高的就是float,所以最终结果是0.5,并且这个0.5是float类型的。

为什么说不是double类型呢,当然如果你这样处理:double m = x/y,当然m是double类型的,也不会报错,而如果你写成int m = x/y,编译器报错提示的时候就会让你转换成float或者进行强制转换成int,他是不会提示你转换成double的,尽管这么写并没有报错,原因就是①中所说的向上强转。float转换成double不需要任何提示。

 

概述:

多数据类型参与运算时,最终结果以最高精度为准。

java中可以默认向上转型:byte-short-int-long-float-double

例子:

    public static void main(String[] args) {
        int i = 1;
        float j = 2.0f;
        //如果用int接收,编译器提示b的类型是float,不会提示强转成double(因为此处的最高类型是float)
        //最终结果是float类型的0.5
        float b = i/j;
        //当然也可以用double来接收,此时就是,自动向上转型 float->double
        double y = i/j;
        System.out.println(b);
        System.out.println(y);

        //float的标准定义写法
        float c = 0.5f;
        //自动向上转型 int->float
        float t = 5;
        //double 类型的两种写法都正确
        double d = 0.5;
        double e = 0.6d;
        //自动向上转型 int-》double
        double f = 6;
    }

 

第二种运算:

如下赋值语句有什么问题:

	short i = 1;
  	i = i + 1;//1
    
    short j = 1;
    j += 1;//2

结果:1.编译器提示错误 2.正常

分析:这道题首先需要明白在java规范中:高位转低位需要显式强制转换 ,低位转高位会隐式的进行转换;byte short char 参与运算时,会先自动转换为int类型。

题目首先要在抓住赋值的操作,在1处[short]+[int]会得到[int]的结果,[short] = [int]赋值过程中缺少显式类型转换,正确的写法应该是i=(short) (i + 1);。而2处,这是一种复合赋值操作,它会自动地将所执行计算的结果转型为其左侧变量的类型,即j += 1等价于j=(short) (j + 1),所以能够正确执行。
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值