zoukankan      html  css  js  c++  java
  • java基础之8种基本数据类型

    简单往往是最重要的,在刚刚学java的时候老师会给我们先讲这8种基本数据类型,今天再来做一个温习,【本文大部分参考了 https://zhuanlan.zhihu.com/p/25439066,在上面做了一点补充】

    • 根据java的数据类型分类

    1、整型

      byte 、short 、int 、long

    2、浮点型

      float 、 double

    3、字符型

      char

    4、布尔型

      boolean

    • 8种基本数据类型
    数据类型名称   占用字节 默认值 封装器
    byte 1 0 Byte
    short 2 0 Short
    int   4 0 Integer
    long   8 0.0l Long
    float 4 0.0f  Float
    double  8  0  Double
     char  u0000(空格) Character 
     boolean  - - Boolean 

    对于boolean布尔数据类型,在《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。

    这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。

    • 8种基本数据类型的取值范围

      a. 整形

        1.  byte : -128~127 (负  2 的7次方 到 2 的7次方-1)

        2.  short : -32768 ~ 32767  (负  2 的15次方 到 2 的15次方-1)

        3.  int :  -2147483648~2147483647(-2的31次方到2的31次方-1)

        4.  long: -9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)

      b. 浮点型

        float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。

        float(单精度浮点型)取值范围:3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)

        double(双精度浮点型)取值范围:1.797693e+308~4.9000000e-324(同上)

        double 类型比float 类型存储范围更大,精度更高。

        通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 "F" 。

        浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这时正常的。

      c. 字符型

        char 有以下的初始化方式:

        char ch = 'a'; // 可以是汉字,因为是Unicode编码

        char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等。

        char ch = ''; // 可以用字符编码来初始化,如:'' 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。

        Java是用unicode 来表示字符,“中” 这个中文字符的unicode 就是两个字节。

        String.getBytes(encoding) 方法获取的是指定编码的byte数组表示。

        通常gbk / gb2312 是两个字节,utf-8 是3个字节。

      d. 布尔型

        boolean : 就俩  false 和true  ,程序员都知道~

    • 8种基本数据类型的相互转换

        将一种类型的值赋值给另一种类型是很常见的。在Java中,boolean 类型与其他7中类型的数据都不能进行转换,这一点很明确。但对于其他7种数据类型,它们之间都可以进行转换,只是可能会存在

      精度损失或其他一些变化。

        转换分为自动转换和强制转换:

        自动转换(隐式):无需任何操作。

        强制转换(显式):需使用转换操作符(type)。

        将6种数据类型按下面顺序排列一下:

        double > float > long > int > short > byte

        如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。

      拓展知识点

        Java是面向对象语言,其概念为一切皆为对象,但基本数据类型算是个例外哦,基本数据类型大多是面向机器底层的类型,它是 “值” 而不是一个对象,它存放于“栈”中而不是存放于“堆”中,但Java一切皆为对象的概念不是说说而已,它为每一个基本数据类型都做了相应的包装类,我们日常使用中大多情况下都会使用着这些包装类:

      boolean Boolean
      char Character
      byte Byte
      short Short
      int Integer
      long Long
      float Float
      double Double
      String(字符串)
      包装类就是一个对象,它存放于“堆”中。

     

    为了未来有更多的选择
  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/zhixinSHOU/p/14697331.html
Copyright © 2011-2022 走看看