关于Java基本数据类型那些小细节(变量声明、赋值等)

前提:了解基本类型 https://www.runoob.com/java/java-basic-datatypes.html

一、变量声明

  • 整数型默认int
  • 浮点型默认double

  1、声明float类型

        float f11 = 1;      //赋值整数不会报错,可加f可不加,会自动转换成带精度的数
//      float f12 = 1.0;    //赋值小数会报错,要加上f后缀
        float f13 = 1.0f;

 

注意:当进行两个数(整数/浮点数)进行比较,float类型的变量值带f后缀时,有两种情况。(这个细节很容易忽视,就好比字符串比较时,经常会习惯性用==操作符)

  (一)被比较的数为带精度的整数,例:1.0等。

    此时,被比较数不需要加f后缀,也能正确得到比较结果。如下图所示:

     

 

  (二)被比较的数为纯小数,例:1.8等。

    此时,被比较数需要加f后缀,才能正确得到比较结果。如下图所示:

    被比较数不加f后缀时:

    

     被比较数加f后缀时:

    

 

  2、声明double类型

//        声明double类型时,可加d后缀可不加,会自动转换为带精度的数
        double d11 = 1;
        double d12 = 1.0;
        double d13 = 1.0d;

 

注意:当进行两个数(整数/浮点数)进行比较时,与纯小数比较时,也有两种情况。(这个情况主要还是和精度有关,一般不容易犯错,但也要注意)

  (一)被比较的数为不带后缀的纯小数,例:1.8等

 

    因为浮点数默认double,不带后缀的纯小数都默认转换为double了,所以能得到正确的比较结果。如下图所示:

    

 

  (二)被比较的数为带后缀f的纯小数,例:1.8f等

    因为double比float精度高,所以不能得到正确的比较结果。如下图所示:

     

   

   3、声明long类型

//        声明long类型
//        long l11 = 444444444444444; //报错,要加上l后缀
        long l12 = 444444444444444l;

  4、局部变量声明时没有初始化就使用,会报错(有点跳戏了,不过和变量声明还是有一丝丝关系啦~~~)

        int a;
        int b = 0;
        int c = 0, d = 0;
//        System.out.println(a);  //未初始化就使用会报错(局部变量)
        System.out.println(b);  //初始化使用不会报错(局部变量)

 

二、赋值

  • 向上自动转换
  • 向下强制转换

  备注: byte的类型的范围是 -128 ~ 127 ( -2^(8-1)  ~  2^(8-1) -1 )

  1、赋值问题

   举例:byte赋值

        //直接赋值超出范围报错,如下
//        byte exampleB1 = 128;

  

posted @ 2020-12-05 15:59  JadeXu07  阅读(496)  评论(0)    收藏  举报