zoukankan      html  css  js  c++  java
  • java 数据类型

    java 数据类型

    转载请注明出处:https://www.cnblogs.com/guoapeng/p/13783339.html

    第一章:java 基本数据类型

    Java 中的基本数据类型只有以下8 个,除了基本类型(primitive type),剩下的都是引用类型(reference type)。

    原始类型:boolean,char,byte,short,int,long,float,double。

    包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double。

    1. 布尔型:

    原始类型(primitive type):

    boolean: 

    说明:boolean数据类型表示一位的信息, 但是由于虚拟机处理的最小单位是byte, 所以存储一位的boolean信息仍然需要1byte。

    存储字长:1byte 

    值范围:false, true

    包装类型(reference type):

    Boolean(java.lang.Boolean)

    包装类型存储字长:

    对象头(Header)(Markword + 类指针kclass):

    32位系统上占用8bytes,64位系统上占用16bytes

    实例数据(Instance Data):1byte

    对齐填充(Padding):7bytes

    总共:32位系统上占用16bytes,64位系统上占用24bytes

    值范围:Boolean.FALSE, Boolean.TRUE

    2. 整型:

    8位:

    原始类型(primitive type):

    byte: 

    说明:byte 数据类型是8bit、有符号的,以二进制补码表示的整数;

    存储字长:1byte

    值范围:-128(-2^7)到 127(2^7-1)

    默认值:0

    包装类型(reference type):

    Byte(java.lang.Byte):

    存储字长:32位系统上占用16bytes,64位系统上占用24bytes(参考Boolean对象存储结构推算)

    16位:

    原始类型(primitive type):

    short:

    说明:short 数据类型是 16 位、有符号的以二进制补码表示的整数

    存储字长:2byte

    值范围:-32768(-2^15)到 32767(2^15-1)

    默认值:0

    包装类型(reference type):

    Short(java.lang.Short)

    存储字长:32位系统上占用16bytes,64位系统上占用24bytes(参考Boolean对象存储结构推算)

    32位:

    基本类型(primitive type):

    int

    说明:int 数据类型是32位、有符号的以二进制补码表示的整数;

    存储字长:4byte

    值范围:-2,147,483,648(-2^31)到 2,147,483,647(2^31-1)21亿多, 助记:比中国人口多约二分之一,约是世界人口的三分一

    默认值:0

    包装类型(reference type):

    Integer(java.lang.Integer)

    存储字长:32位系统上占用16bytes,64位系统上占用24bytes(参考Boolean对象存储结构推算)

    64位:

    原始类型:

     long

    说明:long 数据类型是 64 位、有符号的以二进制补码表示的整数;

    值范围:-9,223,372,036,854,775,808(-2^63)到 9,223,372,036,854,775,807(2^63 -1)什么概念?

    包装类型(reference type):

    大于64位

     对于某些科学计算,64位整数依然不够用, 比如本人曾经就遇到64位不够用的情况,用计算机尽可能快地求出尽可能多的素数,然而对于大于64位的整数java没有提供原始类型,此时可以使用java 类库提供的包装类型BigInteger(java.math.BigInteger) 该类是Number(java.lang.Number)的子类。

    BigInteger bi = new BigInteger("1234567890");
    System.out.println(bi.pow(5)); // 2867971860299718107233761438093672048294900000

    BigInteger:

    说明:BigInteger内部用一个int[]数组来模拟一个非常大的整数,BigInteger用于表示任意大小的整数;

    BigInteger是不变类,并且继承自Number

    BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确,但是要处理ArithmeticException;

    BigInteger转换成基本类型时也可使用longValue()等方法,如果BigInteger表示的范围超过了基本类型的范围,转换时将丢失高位信息,即结果不一定是准确的。

    3. 浮点型:

    32位

    原始类型(primitive type):

    float

    说明:float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;浮点数不能用来表示精确的值,如货币;

    值范围:IEEE745 ~ IEEE754

    默认值是 0.0f;

    包装类型(reference type):

     Float(java.lang.Float)

    64位

    原始类型(primitive type):

    double

    说明:double类型同样不能表示精确的值,如货币;

    值范围:IEEE745 ~ IEEE754

    默认值是 0.0d;

    包装类型(reference type):

    Double

    大于64位

    java未提供大于64位浮动数的原始类型,但是在Java类库中提供了包装类型BigDecimal(java.math.BigDecimal)

    货币单位建议使用java类库提供的包装类型BigDecimal

    MYSQL数据库选择decimal类型,注意默认值 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦!

    4. 字符型:

    原始类型(primitive type):

    char

    说明:char类型是一个单一的 16 位 Unicode 字符

    值范围:Unicode 0 ~ Unicode 2^16 

    默认值:u0000 (Unicode 0)

    包装类型(reference type):

    Character(java.lang.Character)

    5. 字符串类型:

     在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

    String实例的值是通过字符数组实现字符串存储的。

     7. 数据类型小实验

    浮点数为什么不能用来表示货币?

    注:根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确。只能无限接近于那个值.

    8. 参考文档:

    https://www.runoob.com/java/java-basic-datatypes.html

    java一个对象占用多少字节?

    https://blog.csdn.net/zzx410527/article/details/93646925?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.channel_param

    java 中 BigDecimal 详解

    https://blog.csdn.net/qq_35868412/article/details/89029288

    BigInteger:

    https://www.liaoxuefeng.com/wiki/1252599548343744/1279767986831393

    深入理解Java String类

    https://blog.csdn.net/ifwinds/article/details/80849184

    转载请注明出处, 更多博文请访问https://www.cnblogs.com/guoapeng/
  • 相关阅读:
    BeautifulSoup的基本用法
    打印实例
    webservice和一般处理程序
    C# 后台调用存储过程
    表格增加删除
    asp.net C# 获得配置文件AppSettings 的值
    深入浅出zookeeper(一)
    resource下的excel文件下载被损害
    csdn添加目录
    spring面试题,求求你别问我spring了!
  • 原文地址:https://www.cnblogs.com/guoapeng/p/13783339.html
Copyright © 2011-2022 走看看