Java数据类型、运算符(一)

0、数据类型

1) 基本数据类型

   基本数据类型也称为原生类,分为四类八种
   a、整形(4种)
    ① byte :字节型,占用1个字节,取值范围为 :-128~127
    ② short :短整型,占用2个字节,取值范围为 :-215~215-1 = 65535
    ③ int :整型,占用4个字节,取值范围为 :-231~231-1
    ④ long :长整型,占用8个字节,取值范围为 :-263~263-1
     注意 :① 整型字面值默认是 int 类型来存储;如果整数字面值超过了 int 类型的取值范围,编译会报错;
        ② 如果需要制定使用 long 类型来存储该整数字面值,需要在其后边加 l 或 L 后缀;
        ③ int类型为最常用的整数类型;
   b、浮点型(2种)
    ① float :单精度浮点型,占用4个字节
    ② double :双精度浮点数,占用8个字节
     注意 :① 浮点数字面值默认类型为 double,如果想要使用 float 类型来存储浮点数字面值,则需要在其后边添加 f 或 F 后缀;
        ② double 类型为最常用的浮点类型,double 类型可在字面值后边添加 D 或 d ,也可以省略;
        ③ 浮点型存储数据可能存在精度损失;
        ④ 存储科学计数法字面值必须为 double 类型,eg :double d = 3e5; 相当于 3 * 105 = 300000.0;
   c、字符型(1种)
     char :字符型,占用2个字节,取值范围为 :0~65535
      注意 :在一定范围内,字符型变量也可以通过 int 类型的整数来赋值;
   d、布尔型(1种)
     boolean :布尔型,占用1个字节
      注意 :① 布尔型的值只能为 true 或 false;
         ②true 的哈希码为 1231; false 的哈希码为 1237;

2) 引用数据类型

    类、接口、数组

1、数据类型转换问题

1) 自动数据类型转换

   a、数值型 :从小到大
     整型 :byte —> short —> int —> long
     浮点型 :float —> double
     整型 --> 浮点型 :byte --> short --> int --> long -->float -->double
        转换过程中可能存在精度损失
   b、字符型 :
     char --> int --> long --> float --> double
     char 字符型会根据码表将字符对应的整数编号(ASCII值)转为 int 类型

2) 强制数据类型转换

   数据类型 :从大到小
   格式 :(type)数据; —> 将数据的类型强制转换为小括号内的类型
    注意 :① 浮点数强制转换为整数时,存在精度损失,无论小数部分有多大,都直接舍弃;
       ② 布尔类型无法通过强制转换为数值型,否则编译报错
       ③ 当大的数据类型的值超过了小的数据类型的取值范围时,从最低位开始拿取最低位数的二进制



   例题 :如下代码哪些存在错误
     byte b1 = 127; //第一行
     int i = 127;//第二行
     byte b2 = i; //第三行

   解析 :
    第三行存在编译报错,其他的正确
   原因 :
    第一行 :127 为 int 类型,存在 int --> byte,但是由于编译检查,在编译第一行代码时,程序会检查 127 是否在 byte 类型的取值范围内,若存在,这编译通过;如果超出范围,则需要强制类型转换,int 强转为 byte,否则编译报错;
    第二行 :127 在 int 范围内,通过;
    第三行 :编译检查时,因为程序不能确定变量 i 的具体值,所以编译报错;

2、Java运算符(一)

1) 概述 : java中内置的表示特定运算规则的符号

2) 分类 :

   ① 算术运算符 :+ - * /(整除) %(求余) ++ –
    注意 : a、运算结果的数据类型
     ① 当两个元素数据类型一致,结果的数据类型和元素保持一致;
     ② 当两个元素数据类型不一致,结果的数据类型和其中大的数据类型保存一致;
     ③ 其中 byte short char 类型参与运算时,会自动提升为 int 类型

     eg :byte b1 = 3;
        byte b2 = 4;
        byte b3 = b1 + b2; //编译时会报错,byte 类型参与运算时,会自动提升为 int 类型,赋值给 byte 类型需要强转
        byte b4 = 3 + 4; //不会报错,且正常运行;原因 :在编译检查时,程序会将字面值 3 和 4 进行运算,检查其结果在不在 byte 范围内,如果在,则编译通过;否则编译报错;
        b、当使用除法( / )时,
     ① 当 int 类型 / int 类型时,结果为 int 类型,直接舍弃小数部分,达到取整效果
     ② 当 int 类型 / 0 时,除数为 0,编译不报错,运行报错(也称运行时异常)
     异常信息 :java.lang.ArithmeticException:/by zero (算术异常 :除 0 操作)
     ③ 当 正浮点数 / 0 : Infinity(无穷大)
     ④ 当 负浮点数 / 0 : -Infinity(无穷小)
     ⑤ 0.0 / 0 : NaN(Not a number 非数字)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值