zoukankan      html  css  js  c++  java
  • java的数据类型相关知识点

     

    总结就是八个字:

    数据2型,四类八种 (个人理解,仅供参考)

    解析图如下:

    在这里插入图片描述

    基本数据类型:

    1.逻辑类:boolean
    布尔类型,它比较特殊,布尔类型只允许存储true(真)或者false(假),不可以用0或者非0表示
    可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转
    换为 int,使用 1 来表示 true,0 表示 false。JVM 支持 boolean 数组,但是是通过读写 byte数
    组来实现的。
    
    2.文本类:char
    字符类型,它在内存中占用2个字节,也就是16 bit,因为java本身的字符集不是用ASCII码来存储的,
    而是用的16位的Unicode字符集,所以它的字符存储范围也就是'u0000 -- uffff',默认值呢?就是'u0000'
    
    3.整数类:
    下面从小到大来一一介绍:
    
    byte:可以说是java中最少的数据类型了,它在内存中占用1个字节,也就是8位(bit),值得范围是:-128~127,
    也就是-2的7次方到2的7次方减一,默认值是0B.
    
    short:短整型,它在内存中占用的是2个字节,16位,值得取值范围是-32768~32767,也就是-2的15次方到2的15次方减一,
    默认值也是0S.
    
    int:整型,在内存中占4个字节,32位,值得取值范围是-2147483648~2147483647,也就是-2的31次方到2的31次方减一,
    默认值还是0
    
    long:长整型,在内存中占8个字节,64位,值的取值范围是-2的63次方到2的63次方减一,默认值要注意了,因为是长整型,
    所以默认是虽说是0,但是准确的说是0L,必须要加上L来表示它是long类型,不加就成了int类型了.
    
    4.浮点类:
    
    不声明小数类型的情况下,默认为double
    
    float :单精度浮点型, 在内存中占4个字节,32位,主要用来存储小数的,但是有限制,有效小数位只有6~7位,默认是0.0f ,
    取值范围是:3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示  乘以10的负45次方)
    
    double:双精度浮点型,在内存中占8个字节,64位,也是用来存储小数的,默认是0.0,取值范围是1.797693e+308 到
    4.9000000e-324(e+308表示是乘以10的308次方,同样,e-324表示乘以10的负324次方)
    
    数据类型转换(boolean不参与数据类型的转换):
    		    char(16 bit)
    			|
    byte(1 bit) ->  short(16 bit)  -> int(32 bit)  -> long(64 bit)
    			|                |
    		     float(32 bit)    double(64 bit)
    根据类型所占内存大小,由高位类型转换低位类型没问题,低位转高位会出现精度丢失
    

    引用数据类型:

    基本类型和引用类型的关系:
    基本类型	二进制位数	包装器类(引用类型)
    boolean			1		Boolean
    byte			8		Byte
    char			16		Character
    short			16		Short
    int				32		Integer
    long			64		Long
    float			32		Float
    double			64		Double
    
    对于取值范围,在对应的包装器类中有常量已经声明:
    基本类型byte 二进制位数:Byte.SIZE最小值:Byte.MIN_VALUE最大值:Byte.MAX_VALUE
    基本类型short二进制位数:Short.SIZE最小值:Short.MIN_VALUE最大值:Short.MAX_VALUE
    基本类型char二进制位数:Character.SIZE最小值:Character.MIN_VALUE最大值:Character.MAX_VALUE
    基本类型double 二进制位数:Double.SIZE最小值:Double.MIN_VALUE最大值:Double.MAX_VALUE
    

    两者的异同:

    1.Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象。从Java1.5开始,
    JVM就可以完成基本类型和它们对应包装类之间的自动转换。因此我们在赋值、参数传递以及数学运算的时候
    就可以像使用基本类型一样使用它们的包装类,但这并不意味着你可以通过基本类型调用它们的包装类才具有
    的方法。另外,所有基本类型(包括void)的包装类都使用了final修饰,因此我们无法继承它们扩展新的类
    也无法重写它们的任何方法。而引用数据类型是存储在堆中的.
    
    2.基本类型的优势:数据存储相对简单,运算效率比较高
    
    3.包装类的优势:有的容易,比如集合的元素必须是对象类型,满足了java一切皆是对象的思想
    
    4.声明方式不同,基本类型不适用new关键字,而包装类型需要使用new关键字来在堆中分配存储空间;
    
    5.存储方式及位置不同,基本类型是直接将变量值存储在堆栈中,而包装类型是将对象放在堆中,然后通过引用来使用;
    
    6.初始值不同,基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null
    
    7.使用方式不同,基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用到

    https://www.csdn.net/gather_24/NtjaAg2sMzAxLWJsb2cO0O0O.html
  • 相关阅读:
    [Swift]LeetCode472. 连接词 | Concatenated Words
    [Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()
    [Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密
    [Swift通天遁地]七、数据与安全-(18)使用Swift实现原生的MD5加密
    [Swift通天遁地]七、数据与安全-(17)使用Swift实现原生的3DES加密和解密
    poj 1265 Area(pick 定理)
    Visual C++文件后缀名释义
    Linux 设备文件的创建和mdev
    37、ifconfig命令
    iOS开发- 生成/解析.vcf文件
  • 原文地址:https://www.cnblogs.com/PasserByOne/p/11323673.html
Copyright © 2011-2022 走看看