java数据类型及其类型转换

一、java的数据类型
1.分类
分类概括图如下图





2.数据范围:

数据类型    关键字 在内存中所占字节数 位数  范围 默认值
          byte 1   8                      -128~127                              0
短整型 short 2  16        -215~215-1                             0
整型    int 4                                       32      -231~231-1                             0
长整型  long 8  64      -263~263-1                             0
布尔型 boolean 1   8 true,false                          false
字符型   char 2    16       0~216-1                             '\u0000'
单精度浮
  点型                   float         4      32                        1.4013E-45                      0.0F
     ~3.4.28E+38
双精度浮
点型                        double 8             64                        4.9E-324~                           0.0D
1.7977E+308
分析以下问题
(1).java的数据类型所表示的十进制数是怎么算出来的?
  答:以数值型举例:
                byte型 占1个字节=8位 -------数据范围是 :-28-1~28-1-1
                short型占2个字节=16位------数据范围是:-216-1~216-1-1
int型占4个字节    = 32位-------数据范围是:-232-1~232-1-1
由此可以得出一下计算公式
数据范围:-2n-1~2n-1-1   其中n位数据类型所占的二进制位数
(2).为什么要定义变量?
答:用来不断存放同一类型的常量,并且可以重复使用。
(3).数据类型的作用?
答:一是确定变量数据所属类型,二是确定变量在内存空间的所占的大小。
注意:整数默认为int型,小数

默认为double型;
    在定义long型和float型变量时的格式分别如下:
   long a=50L;
   float b=50F

全局变量和局部变量
 全局变量:定义在方法外部,类的内部的变量
局部变量: 定义在方法内部,或者语句块的内部的变量
变量的作用域:从变量定义所在的花括号开始,到花括号结束;即是在{ }之间,要注意的是一定要给初始值。

2.类型转换


(1).自动类型转换的特点

  a.所有的byte型,short型和 char型 将被提升到int
b.如果一个操作数是long型,计算结果就是long型
c.如果一个操作数是float型,计算结果就是float型
d.如果一个操作数是double型,计算结果就是double型

(2).强制类型转换
语法:取值范围较小的数据类型  变量名 =  (取值范围较小的数据类型)取值范围较大变量
举例:int num=20;
    byte num2=(byte)num;

关于类型转换中的损失精度的问题
下面哪条语句是编译失败的呢?为什么?
byte a1=5,a2=7,c;
c=a1+a2;
c=5+7;
答:第二条语句显然会编译失败,原因是:byte型数据在参与运算时会自动提升为int
   型,则计算结果就为int型了;然而语句c=a1+a2等效为----->byte = int 即将int
   型数据放到了byte类型的变量中;显然会损失精度,所以编译会失败。




解决办法:使用强制类型转换-------将出错的语句即第二条语句改为如下则编通过

c=(byte)(a1+a2);
注意:一旦byte、short、char类型的变量参与运算,其运算结果为int型-----先自动提升为int再参与运算





 

猜你喜欢

转载自blog.csdn.net/RYJ359/article/details/75042239