zoukankan      html  css  js  c++  java
  • Java基础03 八大基本类型以及类型之间的转换

    Java的基本类型以及封装类

            Java的基本类型有八种,可以分为三大类:

    • 字符类型:char
    • 布尔类型:boolean
    • 数值类型:byte、short、int、long、float、double

            基本类型的取值范围如下:

    • char:16位,存储Unicode码,用单引号赋值。
    • boolean:只有true和false两个取值。
    • byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
    • short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
    • int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
    • long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
    • float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
    • double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。

            Java在设计之初就已经定义好了各个类型的大小,不会随机器的不同而产生不同的大小,其定义的大小都被设计到对应封装类的常量中,最大值与最小值分别用 MAX_VALUE、MIN_VALUE 两个常量表示。Java的基本类型对应的封装类型如下表格:

    简单类型 char boolean byte short int long float double
    二进制位数 16 1 8 16 32 64 32 64
    封装类 Character Boolean Byte Short Integer Long Float Double

    类型之间的转换

            在Java的开发中,经常会涉及到不同基础类型之间的转换,Java语言处了布尔类型的数据之外,另外的7中基本类型之间可以相互转换。
            Java类型转换可以分为以下几类:

    1. 自动类型转换:指系统支持把某种基础类型直接付给另一种基础类型的变量。
        前提条件,必须是把表数范围小的数值或变量赋给表数范围大的变量。
    2. 强制类型转换:将大范围的数据类型转换为小范围的数据类型,超出小范围的大小,会出现数据精度丢失的情况。
        转换方式:(Type) value
        注意:
          ①把一个浮点类型的数据转换为整数类型的数据,会直接截断小数部分。
          ②把一个超出数据范围的数值赋给数据类型是,会出现数据溢出的情况,造成数据的缺失。(原因:当你大范围转小范围,Java只会截取小范围的类型的位数(二进制形式的机器码),也就是把左边多余的位数截取掉,若需要转换的数值大小超过小范围的大小,就会出现精度丢失的情况)
    3. 表达式类型自动提升:在综合以上两种方式,还有一种隐性的方式--表达式类型转换。表达式归根到底属于自动类型转换的范畴之中。
        表达式类型转换的自动提升规则:
          ①所有的byte类型、short类型将被提升到int类型
          ②整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型。
        例子:
    short a = 10;
    a= a - 2;
    // 这个时候就会报错,因为 short 类型会在自动转换为 int 类,你把int 类型的数据赋值给 short 类型的数据,在没有经过强制类型转换的情况下,就会报错
    // 正确的做法是用一个 int 类型的变量去接收
    int b = a - 2
    
    1. 包装类过渡类型转换:通过基本类型的对应的包装类中的对应的xxxValue方法转换为需要的类型。(与String类型的转换比较特殊,需要不同的方法,下面例子中会有)
        注意:与 String 类型之间的转换,其 value 要满足数值类型的格式。
        例子:
    // double 转 float
    double d = 30d;
    Double d1 = new Double(d);
    float f = d1.floatValue() ;
    // int 转 String 类型
    int a = 100;
    String str = String.valueOf(a);
    // String 类型转 int 类型
    String str2 = "123";
    int i = Integer.parseInt(str);
    
  • 相关阅读:
    BZOJ-1206 虚拟内存 Hash+离散化+Priority_Queue
    BZOJ-2324 营救皮卡丘 最小费用可行流+拆下界+Floyd预处理
    BZOJ-1834 网络扩容 最小费用最大流+最大流+乱搞
    学习笔记 --- 最小费用最大流
    BZOJ-1927 星际竞速 最小费用最大流+拆点+不坑建图
    BZOJ-1070 修车 最小费用最大流+拆点+略坑建图
    BZOJ-1207 打鼹鼠 DP(LIS)
    BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论
    BZOJ-1189 紧急疏散evacuate BFS预处理+最大流+二分判定+神建模!!
    BZOJ-1822 Frozen Nova 冷冻波 计(jie)算(xi)几何+二分+最大流判定+经典建图
  • 原文地址:https://www.cnblogs.com/sophia-show/p/13631317.html
Copyright © 2011-2022 走看看