Java基础教程之八大基本数据类型

 更新时间:2019年06月30日 09:13:17   作者:工匠初心  
这篇文章主要给大家介绍了关于Java基础教程之八大基本数据类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean.

其中:

整型:byte, short, int, long

字符型:char

浮点型:float, double

布尔型:boolean

在详细介绍之前,先科普一下,Java中最小的计算单元为字节,1字节=8位(bit)。

一. 整型

Java中整型数据属于有符号数,即第一个bit位为0表示正整数,第一个bit位为1表示负整数。在计算机中负数由补码进行表示,那么补码如何计算呢?

补码=源码取反 + 1;

如:

22,在计算机中的表示为00010110,

-22,取反:11101001,加1:11101010

byte

byte属于Java中的整型,长度为1字节8bit,取值10000000(-128)到 01111111(127),变量初始化默认值为0,包装类Byte

short

short属于Java中的整型,长度为2字节16bit,取值10000000 00000000(-32768)到 01111111 11111111(32767),变量初始化默认值为0,包装类Short

int

int属于Java中的整型,长度为4字节32bit,取值-2^31 (-2,147,483,648)到 2^31-1(2,147,483,647),变量初始化默认值为0,包装类Integer

long

long属于Java中的整型,长度为8字节64bit,取值-2^63 (-9,223,372,036,854,775,808‬)到 2^63-1(9,223,372,036,854,775,8087),变量初始化默认值为0或0L,包装类Long

二. 浮点型

Java中浮点型数据无法由二进制直接表示,而是一种对于实数的近似数据表示法,它遵循IEEE 754标准

float

float属于Java中的浮点型,也叫单精度浮点型,长度为4字节32bit,变量初始化默认值0.0f,包装类Float

1. float结构

包含三部分:符号位、指数位、尾数位

符号位(S) 指数位(E) 尾数位(M)
长度 1bit 8bit 23bit
说明 0表示正数,1表示负数 格式为,E值范围:(0,255),指数位取值:( 形式为1.M或0.M。其中当E=0时,取1.M,称为正规形式,当E!= 0时,取0.M,称为非正规形式

2. float取值

正规形式:

非正规形式:

根据上面公式很容易计算出float的取值范围为:


(最小值,当符号位S取1,指数位E取255)


(最大值,当符号位S取0,指数位E取255)

能取到其间的近似数据。

注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如NAN,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

double

double属于Java中的浮点型,也叫双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类Double

1. double结构

包含三部分:符号位、指数位、尾数位

符号位(S) 指数位(E) 尾数位(M)长度1bit11bit52bit说明0表示正数,1表示负数格式为,E值范围:(0,2047),指数位取值:()形式为1.M或0.M。其中当E=0时,取1.M,称为正规形式,当E!= 0时,取0.M,称为非正规形式2. double取值

正规形式:

非正规形式:

根据上面公式很容易计算出double的取值范围为:


(最小值,当符号位S取1,指数位E取2047)


(最大值,当符号位S取0,指数位E取2047)

能取到其间的近似数据。

注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如NAN,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

三. 字符型char

char属于java中的字符型,占2字节16bit,可以赋值单字符以及整型数值, 变量初始化无默认值,包装类Character。

如:

char a = 'a';

char a = '中';

char a = 12; // 取值范围0~65536,因为char类型在ASCII字符编码中,有对应的数值,可直接做运算,输出字符表中对应的字符

四. 布尔型

boolean

在JVM中并没有提供boolean专用的字节码指令,而boolean类型数据在经过编译后在JVM中会通过int类型来表示,此时boolean数据4字节32位,而boolean数组将会被编码成Java虚拟机的byte数组,此时每个boolean数据1字节占8bit.

--Java虚拟机规范

仅有两个值true, false,变量初始化默认值false

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Java多线程中的CyclicBarrier使用方法详解

    Java多线程中的CyclicBarrier使用方法详解

    这篇文章主要介绍了Java多线程中的CyclicBarrier使用方法详解,CyclicBarrier是一种同步辅助工具,它允许一组线程都等待对方到达公共障碍点,在涉及固定大小的线程的程序中,CyclicBarriers非常有用,这些线程间必须相互等待,需要的朋友可以参考下
    2023-12-12
  • SpringBoot项目的漏洞修复经验分享

    SpringBoot项目的漏洞修复经验分享

    在局域网环境下,由于无法连接外网下载Maven包,常见解决方案是在外网环境搭建相同的开发环境以便更新Maven包,本次漏洞扫描包括Tomcat、jackson-databind、fastjson、logback等组件,通常解决方法是升级到更高版本
    2024-10-10
  • SpringBoot如何进行对象复制的实践

    SpringBoot如何进行对象复制的实践

    本文主要介绍了SpringBoot 如何进行对象复制,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 深入浅出探究Java多态的实现和应用

    深入浅出探究Java多态的实现和应用

    多态是实现面向对象的软件技术中必不可少的一个内容,所以这篇文章主要来和大家讲解一下Java多态的实现和应用,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Java超详细讲解多线程中的Process与Thread

    Java超详细讲解多线程中的Process与Thread

    进程process:在一定的环境下,把静态的程序代码运行起来,通过使用不同的资源,来完成一定的任务;线程thread:是程序中一个单一的顺序控制流程。在单个进程中同时运行多个线程完成不同的工作,称为多线程
    2022-05-05
  • 详解Java的堆内存与栈内存的存储机制

    详解Java的堆内存与栈内存的存储机制

    这篇文章主要介绍了Java的堆内存与栈内存的存储机制,包括JVM的内存优化和GC等相关方面内容,需要的朋友可以参考下
    2016-01-01
  • Spring使用@responseBody与序列化详解

    Spring使用@responseBody与序列化详解

    这篇文章主要介绍了Spring使用@responseBody与序列化详解,@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要的朋友可以参考下
    2023-08-08
  • feign调用第三方接口,编码定义GBK,响应中文乱码处理方式

    feign调用第三方接口,编码定义GBK,响应中文乱码处理方式

    这篇文章主要介绍了feign调用第三方接口,编码定义GBK,响应中文乱码处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 使用Java代码进行因数分解和求最小公倍数的示例

    使用Java代码进行因数分解和求最小公倍数的示例

    这篇文章主要介绍了使用Java代码进行因数分解和求最小公倍数的示例,都是基于最基础的算法原理实现,需要的朋友可以参考下
    2015-11-11
  • Spring Boot实现文件上传的两种方式总结

    Spring Boot实现文件上传的两种方式总结

    应用开发过程中,文件上传是一个基础的扩展功能,它的目的就是让大家共享我们上传的文件资源,下面这篇文章主要给大家总结介绍了关于Spring Boot实现文件上传的两种方式,需要的朋友可以参考下
    2023-05-05

最新评论