Java基本数据类型

摘要:

每个数据类型都有它的取值范围。编译器会根据每个变量或常量的数据类型为其分配内存空间。Java为数值、字符值和布尔值数据提供了八种基本数据类型。

文章目录

  • Java基本数据类型
    • 一、整数类型
      • 1.数值前缀和后缀
      • 2.Java&C++提示
    • 二、浮点类型
      • 1.double&float
      • 2.浮点数值的后缀
      • 3.浮点数的表示
      • 3.三个特殊的浮点数值
    • 三、字符类型
      • 1.字符的表示
      • 2.Unicode 和 ASCII 码
      • 3.转义字符
      • 4.字符型数据与数值型数据之间的转换
      • 5.字符的比较和测试
    • 四、布尔类型

一、整数类型

整型于表示没有小数部分的数值,它可以是负数。

类型 存储需求 取值范围 数值
byte 1字节 −27-2^7−27 ~ 27−12^7-127−1 (-128 ~ 127) 8 位带符号数
short 2字节 −215-2^{15}−215 ~ −215−1-2^{15}-1−215−1 (-32 768 ~ 32 767) 16 位带符号数
int 4字节 −231-2^{31}−231 ~ −231−1-2^{31}-1−231−1 ((-2 147 483 648 ~ 2 147 483 647) 32 位带符号败
long 8字节 −263-2^{63}−263 ~ −263−1-2^{63}-1−263−1 (即 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 8077) 64 位带符号数

1.数值前缀和后缀

  • 十六进制数值有 0x0X前缀
  • 八进制数值有前缀0
  • 二进制数值有前缀0b0B
  • 可以为数值增加下划线:如1_000_000,0b1111_0100_1111
  • 长整型数值有后缀Ll

2.Java&C++提示

1.Java中, 整型的范围与运行 Java 代码的机器无关。
2. Java 没有任何元符号 unsigned 形式 int long short byte 类型

二、浮点类型

浮点类型用于表示有小数部分的数值

类型 存储需求 取值范围 数值 有效数位
float 4字节 负数范围:−3.4028235×10+38-3.4028235\times10^{+38}−3.4028235×10+38~ −1.4×10−45-1.4\times10^{-45}−1.4×10−45 正数范围:1.4×10−451.4\times10^{-45}1.4×10−45 ~ 3.4028235×10+383.4028235\times10^{+38}3.4028235×10+38 32 位,标准 IEEE 754 (有效位数为6 - 7位)
double 8字节 负数范围:−1.7976931348623157×10+308-1.7976931348623157\times10^{+308}−1.7976931348623157×10+308~ −4.9×10−324-4.9\times10^{-324}−4.9×10−324 正数范围:4.9×10−3244.9\times10^{-324}4.9×10−324 ~ 1.7976931348623157×10+3081.7976931348623157\times10^{+308}1.7976931348623157×10+308 64 位,标准 IEEE 754 (有效位数为 15 位)

浮点数值不适用于无法接受舍入误差的计算中,如果在数值计算中不允许有任何舍入误差,应该使用 BigDecimal 类

1.double&float

  • double 型是 float 型的两倍。所以,double 型又称为双精度 (double precision), 而 float 称为单精度 ( single precision)。
  • 在很多情况下, float 类型 的精度很难满足需求,通常情况下,应该使用 double 型。

2.浮点数值的后缀

  • float 类型的数值有Ff后缀
  • double 类型的可以有Dd后缀
  • 没有后缀的浮点数值默认为 double 类型

3.浮点数的表示

科学计数法表示:

1.23456×1021.23456 \times 10^21.23456×102 可以写成 1.23456E2 或者 l.23456E+2

  • 浮点型直接量可以用 a×10ba\times10^ba×10b 形式的科学记数法表示
  • E (或 e) 表示指数,既可以是大写的也可以是小写的

十六进制数表示:

0.125×2−3\times2^{-3}×2−3 可以表示成 0x1.0p-3

  • 在十六进制表示法中,使用 p表示指数
  • 尾数采用十六进制,指数采用十进制
  • 指数的基数是 2, 而不10

3.三个特殊的浮点数值

  1. 正无穷大 Double.POSITIV E_INFINITYFloat.POSITIVE_INFINITY

  2. 负无穷大 Double.NEGATIV_INFINlTYFloat.NEGATIV_INFINlTY

  3. NaN(不是一个数字) Double.NaNFloat.NaN

注:不能这样桧测一个特定值是否等于 Double.NaN,可以使用 Double.isNaN 方法

if (x == Double.NaN) // is never true
if (Double.isNaN(x)) // check whe ther x is "not a number"

三、字符类型

字符数据类型表示单个字符,一些Unicode字符需要两个char值

1.字符的表示

  • 字符型直接量用单引号括住

    char letter = 'A';
    

    字符串直接量必须括在双引号中。而字符直接量是括在单引号中的单个字符。

2.Unicode 和 ASCII 码

编码(encoding):将字符映射到它的二进制形式的过程。 编码表(encoding scheme)
scheme):字符有多种不同的编码方式,编码表定义该如何编码每个字符。

  • ASCII 码(美国标准信息交换码)是表示所有大小写字母、数字、标点符号和控制字符的 8 位编码表

  • 16 位 Unicode 码 占 两 个 字 节,用 以 \u 开头的 4 位 十六进制数表示,范围从 ‘\u0000’ 到 ’\UFFFF’。(Unicode 码包括ASCII码)

    一个 16 位的编码所能产生的字符只有 65 536 个,它是不足以表示全世界所有字符的。因此,Unicode 标准被扩展为 1 112 064 个字符。这些字符都远远超过了原来 16 位的限制,它们称为补充字符(supplementary character)

3.转义字符

转义序列 名称 Unicode码 十进制数值
\b 退格键 \u0008 8
\t Tab 键 \u0009 9
\n 换行符 \u000A 10
\f 换页符 \u000C 12
\r 回车符 \u000D 13
\\ 反斜杠 \u005C 92
\" 双引号 \u0022 34

4.字符型数据与数值型数据之间的转换

  • char 型数据可以转换成任意一种数值类型,反之亦然。将整数转换成 char 型数据时,只用到该数据的低十六位,其余部分都被忽略
  • 要将一个浮点值转换成 char 型时,首先将浮点值转换成 int 型,然后将这个整型值转换为 char 型
  • 如果转换结果适用于目标变量(范围不大于),就可以使用隐式转换方式;否则,必须使用显式转换方式
  • 0~FFFF 的任何一个十六进制正整数都可以隐式地转换成字符型数据。而不在此范围内的任何其他数值都必须显式地转换为 char 型
  • 所有数值操作符都可以用在 char 型操作数上。如果另一个操作数是一个数字或字符,那么 char 型操作数就会被自动转换成一个数字

Unicode 转义序列会在解析代码之前得到处理:
“\u0022+\ u0022” 并不是个由引号 (\U 0022) 包围加号构成 的字符串,实际 上, \u0022 会在解析之前转换为" ,这会得到“+“ ,要当心注释中的 \u:
// \u000A is a newline
语法错误 因为读程序时 \u000A会替换为一个换行符

5.字符的比较和测试

  • 两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的 Unicode 值实现的。
  • 程序中需要测试一个字符是数字、字母;大写字母,还是小写字母,为了方便,Java 的 Character 类提供了下列方法用于进行字符测试:
    方法 描述
    isDigit(ch) 如果指定的字符是一个数字,返冋 true
    isLetter(ch) 如果指定的字符是一个字母,返冋 true
    isLetterOrDigit(ch) 如果指定的字符是一个字母或者数字,返回 true
    isLowerCase(ch) 如果指定的字符是一个小写字母,返冋 true
    isUpperCase(ch) 如果指定的字符是一个大写字母,返冋 true
    toLowerCase(ch) 返回指定的字符的小写形式
    toUpperCase(ch) 返回指定的宇符的大写形式

四、布尔类型

boolean 数据类型声明一个具有值 true 或者 false 的变量

  • 布尔类型用来判定逻辑条件,整型值和布尔值之间不能进行相互转换

    在C++中,数值甚至指针可以代替 boolean,值0相当于false,Java中不行

【JAVA程序设计】基本数据类型相关推荐

  1. 20175320 2018-2019-2 《Java程序设计》第2周学习总结

    20175320 2018-2019-2 <Java程序设计>第2周学习总结 教材学习内容总结 本周学习了教材的第二章及第三章的内容.在这两章中介绍了Java编程中的基本数据类型与数组以及 ...

  2. java程序设计_Java程序设计:学习笔记(4-5)(未完工)

    声明: 本文内容基于"吉首大学软件学院-Java程序设计(Java面向对象程序设计)"网课与个人实践经验修改编写而成.本文属于Arcadia项目组成部分.若有错误或不足之处存在请联 ...

  3. java课设推荐,《Java程序设计》课程设计报告推荐.docx

    <Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...

  4. Java程序设计-基础知识

    目录 1.JAVA概述 1.1程序设计语言 机器语言 汇编语言 高级语言 1.2Java的特点 简单性 面向对象 安全性 平台独立 多线程 网络功能 执行效率 1.3JDK的设置 Path:----- ...

  5. java程序设计pdf下载_Java程序设计(迟立颖) PDF扫描版[21MB]

    Java程序设计由浅入深地介绍了Java的基础知识,并结合具体的实例重点阐述了Java面向对象的概念及其程序设计方法,还介绍了图形用户界面(GUI)等知识.全书共分11章,内容包括Java概述.Jav ...

  6. java程序设计实验报告_JavA程序设计实验报告.doc

    Java程序设计实验报告 学号: 姓名: 座位号: 实验日期: [实验名称]: JDK配置与开发工具的使用 [实验目的]: 熟悉JDK开发环境. 熟悉EditPlus编辑器或Eclipse等开发环境的 ...

  7. 20165206 2017-2018-2 《Java程序设计》第三周学习总结

    20165206 2017-2018-2 <Java程序设计>第三周学习总结 教材学习内容总结 类:class是关键字,用来定义类. 类声明:例如class People. 对象的声明:类 ...

  8. java程序设计_80后程序员,带你深入理解Java基本的程序设计结构,不来你别后悔...

    前言 现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.从现在开始将介绍Java应用程序设计.本章主要讲述程序设计相关的基本概念(如数据类型.分支以及循环)在Java中的实现方式. ...

  9. 20165334 《java程序设计》第2周学习总结

    学号20165334 <Java程序设计>第2周学习总结 教材学习内容总结 一.第2章基本数据类型与数组 关于标识符 标识符由字母.下划线.美元符号和数字组成,长度不受限制. 标识符的第一 ...

  10. 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...

最新文章

  1. java object monitor_Java-线程状态、ObjectMonitor
  2. oracle文件管理
  3. 如何使用 Chrome 开发者工具 Performance tab 分析 JavaScript 的执行瓶颈
  4. drive es 软件兼容_某知名软件被完美修改!对不住了!
  5. 【Comet OJ - Contest #5 - C】迫真小游戏(优先队列,贪心构造,树,字典序)
  6. python 字符串操作速度_强者一出,谁与争锋?与Python相比,C+的运行速度究竟有多快?|python|编程语言|字符串|示例|算法...
  7. leetcode链表篇
  8. android.graphics包中的一些类的使用
  9. OpenShift 4 - 使用教程和免费试用环境
  10. 发现一个 WPF/E Asp.net Server Control
  11. Gentle.NET笔记(二)-列表示例
  12. Windows10 的简单脚本 杀死所有表格程序
  13. 常见的几类矩阵(正交矩阵、酉矩阵、正规矩阵等)
  14. mysql数据库在哪里写语句_MySQL数据库基本操作以及SQL语句
  15. SAE 搭建微信公众平台
  16. igs时间和utc_世界协调时间(UTC)与中国标准时间
  17. 【DPD数字预失真】射频功放的Volterra级数数字预失真系统开发
  18. 银海系统服务器登录不上,解决登录问题 - Skype for Business | Microsoft Docs
  19. 计算机键盘设置功能键取消,键盘insert操作怎么取消?电脑键盘insert操作取消教程...
  20. 携程首页手机端-静态页面

热门文章

  1. educoder第六章 关联挖掘 实验二:FP-growth
  2. cpu功耗排行_AMD、Intel主流处理器性能、功耗及性价比排行(更新中)
  3. bgp协议 怎么知道相邻路由的ip地址_三级网络技术考前选择题1—BGP
  4. Java基础教程【第九章:异常处理】
  5. Android移动应用基础教程 【程序活动单元Activity】
  6. oracle缺少控制文件,关于oracle丢失控制文件的恢复办法
  7. php上传压缩文件,8行代码实现PHP上传RAR文件并解压
  8. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...
  9. php按钮打开文件选择框,在Select file(选择)页面单击Select file(选择文件)按钮
  10. java切面不需要接口了吗_详解Spring AOP 实现“切面式”valid校验