zoukankan      html  css  js  c++  java
  • java笔记 -- java数据类型与类型转换

    Java是一种强类型语言, 这就意味着必须为每一个变量声明一种类型.


    Java中一共有8中基本类型:

    • 4种整型:

    整型: 用于表示没有小数部分的数值, 允许为负数
      类型        存储需求        取值范围
      int:          4字节     -2 147 483 648 ~ 2 147 483 647 (正好超过20亿)
      short:          2字节     -32 768 ~ 32 767
      long:         8字节    -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
      byte:         1字节    -128 ~ 127

    • 2种浮点类型:
    • 用于表示有小数部分的数值.

      类型      存储需求         取值范围
      float          4字节         大约 ±3.402 823 47E + 38F(有效位数为 6 ~ 7 位)
      double      8字节         大约 ±1.797 693 134 862 315 70E + 308(有效位数为15位)

     

    • double表示这种类型的数值精度是float类型的两倍(双精度数值), 大部分程序都采用double类型.
    • float类型的数值有一个后缀F, 没有后缀F的浮点数值默认为double类型.可以在浮点数值后面添加后缀D表示double.
    • 表示溢出和出错情况的三个特殊的浮点数值:

    正无穷大
    负无穷大
    NaN

    • 一个正整数除以0: 正无穷大
    • 0/0, 负数的平方根结果为NaN
    • 浮点数值不适用于禁止出现摄入误差的金融计算中, System.out.pritln(2.0-1.1) 将打印出0.8999999999999999, 而不是0.9
    • 浮点数值采用二进制系统表示, 而在二进制系统中无法精确的表示分数1/10.
    • 如果需要在数值计算中不含有任何舍入误差,应使用BigDecimal类

     

    • 1种用于表示Unicode编码的字符单元的字符类型char

    用于表示单个字符, 通常用来表示字符常量, 建议不要在程序中使用char类型

    • 1种用于表示真值的boolean类型

    boolean类型由两个值: false, true, 用来判定逻辑条件.
    整型值和布尔值之间不能进行相互转换. 不能使用if(x = 0), x=0不能转换为布尔值.

    数值类型之间的转换

    • 合法转换:
    • 无信息丢失的转换:

    byte -> short -> int -> long
    char -> int
    int -> double

    • 可能有精度损失的转换:

    int -> float
    long -> float
    long -> double

    • 两个数值进行二元操作时, 先要将两个操作数转换为同一种类型, 然后再进行计算.

    1. 如果两个操作数中有一个是double类型, 另一个操作数就会转换为double类型.
    2. 否则, 如果其中一个操作数是float类型, 另一个操作数将会转换为float类型.
    3. 否则, 如果其中一个操作数是long类型, 另一个操作数将会转换为long类型.
    4. 否则, 两个操作数都将转换为int类型

    • 强制类型转换

    圆括号中给出想要转换的目标类型, 后面紧跟待转换的变量名.
    double x = 9.997;
    int nx = (int) x;    // nx is 9

    int nx = (int) Math.round(x); // 四舍五入, 再转为整型
    Math.round() 返回的是long类型, 由于存在信息丢失的可能性, 所以只有使用显式的强制类型转换才能够将long类型转换成int类型.

    注意: 将一个数值从一种类型强制转换为另一种类型, 而又超出了目标类型的表示范围, 会截断为一个完全不同的值.
    不要在boolean类型与数值类型之间进行强制类型转换, 防止发生错误.

  • 相关阅读:
    2017暑期集训Day 4
    2017暑期集训Day 5
    2017暑期集训Day 3
    Codeforces Round #433
    校内集训(20170906)
    校内集训(20170903)
    培训补坑(day10:双指针扫描+矩阵快速幂)
    培训补坑(day8:树上倍增+树链剖分)
    培训补坑(day7:线段树的区间修改与运用)(day6是测试,测试题解以后补坑QAQ)
    培训补坑(day5:最小生成树+负环判断+差分约束)
  • 原文地址:https://www.cnblogs.com/qiezuimh/p/9712214.html
Copyright © 2011-2022 走看看