• 中文
    • English
  • 注册
  • 查看作者
  • Java中定义float变量时,为什么必须加f?

    今天舍友问到的一个小问题,也是很多同学在初学Java中,都会碰到的一个问题

    首先,我们查看代码的报错举例

    package tv.zhangjia.FloatDemo;
    
    public class Test {
    	public static void main(String[] args) {
    		double d = 1.2;
    		float f = 1.2;//编译报错:Type mismatch: cannot convert from double to float:
                         //类型不匹配:无法从double转换为float
    	}
    }

    为什么会报错呢?是因为你在做赋值运算的时候其实等号两边的类型都是确定的,能赋值成功,而浮点类型默认是double,但是由于float类型和double类型在内存中的二进制表现形式不同,不能像整形那样有时会默认转换,必须要确定类型,带上f

    但是注意,并不是说,定义float变量时,必须加f

    如下例,并不会报错

    package tv.zhangjia.FloatDemo;
    
    public class Test {
    	public static void main(String[] args) {
    		double d = 1.2;
    		float f = 1;//并不会报错,因为编译器会帮你做类型转换
    	}
    }

    参考资料:

    lonrence

     

  • 0
  • 0
  • 0
  • 5.8k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: