Java基本数据类型

2023-10-26

Java中有以下几种基本数据类型,这些类型都是值类型。

类型 值范围 大小 范围
boolean true或false 1位
char Unicode字符 16位 ‘\u0000’~’\uFFFF’
byte 有符号整数 8位 -128~127
short 有符号整数 16位 -32768~32767
int 有符号整数 32位 -2^31~2^31-1
long 有符号整数 64位 -2^63~2^63-1
float IEEE 754浮点数 32位 1.4E-45~3.4028235e+38
double IEEE 754浮点数 64位 4.9E-324~1.7976931348623157E+308

布尔类型

boolean是布尔类型,用来表示逻辑真值,只有两个值,真和假。而且不能和其他基本类型进行类型转换,主要作用是在条件和判断语句中作为判断条件。

各种基本类型的值可以直接出现在程序中,这样的值叫做字面量。对于布尔类型来说,字面量只有truefalse两个。

boolean condition = true;

if(condition)  {
...
}

字符类型

char也就是字符类型,用来表示一个Unicode字符。除了可以使用普通字符外,还可以使用各种转义字符以及Unicode转义序列与一些非打印字符。字符类型的字面量,必须使用单引号'包裹起来。

char c = 'A';
char tab = '\t';
char nul = '\000';
转义字符 含义
\b 退格符
\t 水平制表符
\n 换行符
\f 换页符
\r 回车符
\” 双引号
\’ 单引号
\\ 反斜杠
\xxx Latin-1字符,其中xxx是八进制数
\uxxxx Unicode字符,其中xxxx是十六进制数

char类型和其他数字类型可以互相转换。但是转换之后的意义可能会发生变化。另外需要说一点,在Java中,对于Unicode转义序列的处理和其他语言有些不同。在Java源代码中的任意位置,都可以使用Unicode转义序列,甚至是关键字都可以。

整数类型

Java中有byteshortintlong四中整数类型,它们的主要区别在于表示范围的不同。由于现在计算机性能和存储空间都有了极大的增长,所以byteshort两种类型已经很少用了,一般情况下都使用int类型,只有当int类型不够的时候才使用long类型。

有过C语言学习经验的同学可能知道C语言中有一个unsigned关键字,表示无符号类型,但是在Java中没有这个关键字。这就意味着,Java中的所有整数,都是有符号整数。

byte b = 10;
short s = 50000;
int i = 12345678;
long l = 1234567890;
整数字面量 含义
5000 普通数字,看做int字面量
5000L 后缀lLlong字面量
0b0001 前缀0b,二进制数字,即十进制的1
0007 前缀0,八进制数字,即十进制的1
0xff 前缀0x0X,十六进制数字,即十进制的255

另外,在整数字面量中还可以使用下划线增强可读性,下划线会被程序忽略,不影响数字的值。由于八进制数字以0作为前缀,容易引起混淆,因此在程序中应避免使用。

在Java中使用整数类型,应注意其范围,避免产生溢出等情况。如果数据溢出,就会出现回绕情况。例如

byte a = 127;
byte b = 1;
byte sum = (byte)(a + b); //结果为-128,发生回绕

浮点数类型

浮点数即小数,由于在计算机中存储的时候位数是固定的,而小数点会发生移动,因此得名浮点数。在Java中有floatdouble两种类型。float是单精度浮点数,有至少6位有效数字。double是双精度浮点数,至少有15位有效数字。

float f = 12.34F;
double d = 123.456;
d = 1.23E5;

需要注意默认情况下浮点数被认为是double型字面量,如果想要使用float型字面量,需要添加fF后缀。另外,还可以使用科学计数法表示浮点数。

注意,由于二进制数和十进制数无法进行精确转换,所以Java中的float和double都是近似的,在进行计算的时候需要格外小心,避免产生无法预料的后果。

类型转换

除了布尔类型之外,其余所有的基本类型之间都可以进行互相转换。在转换的时候需要注意数字的范围,如果由小范围向大范围转换,数字精度不会丢失,这样的转换就可以直接进行,称作隐式转换。如果由大范围向小范围转换,数字精度会丢失,这样的转换默认情况下不允许进行。这种情况下需要使用强制类型转换,在要转换的数字前面添加一对括号和要转换的类型,这叫做显式转换。

byte small = 12;
int big = 300;
big = small; //小范围向大范围转换
small = (byte) big; //大范围向小范围转换,需要强制类型转换

浮点数转换成整数的时候,小数部分会被直接截取。

int i = 10;
double d = 12.34;
i = (int) d; //现在是12,小数部分被丢弃
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基本数据类型 的相关文章

随机推荐

  • Android高级UI之事件传递之1

    点击事件的传递规则 在介绍点击事件的传递规则之前 首先要明白这里分析的对象是MotionEvent 即点击事件 所谓的事件分发 其实就是对MotionEvent事件的分发过程 即当一个MotionEvent产生以后 系统需要把这个事件传递给
  • C语言解析json数据结构分析与教程

    写在前面的话 本文档旨在归纳总结个人的学习经验与成果 记录自己的成长 随便给大家分享自己解决的思路 为在这方面有需要的朋友提供一个参考 本人能力有限水平一般 文中难免会有一些错误 希望大家抱着辩证客观的态度来阅读 有错误还请各位海涵包容并予
  • 基于内容的图像检索技术:从特征到检索

    点击上方 机器学习与生成对抗网络 星标置顶 重磅干货 第一时间送达 来自 知乎 作者 赵丽丽 编辑 新机器视觉 在介绍视觉内容检索流程前 先来回顾下文本检索流程 一 相似文本检索 相似文本检索可以分成构建词库 构建索引和检索三部分 如下图所
  • 烽火星空- 笔试

    烽火星空笔试 Java结合数据结构进行出题 无任何网络知识 无任何操作系统知识 无任何框架知识 Collection除外 选择题 Java结合数据结构 没有Java基础知识 全部结合数据结构 数据结构占比60 Java 40 链表占比极高
  • SELECT CASE WHEN 的用法

    1 SELECT CASE WHEN 的用法 select 与 case结合使用最大的好处有两点 一是在显示查询结果时可以灵活的组织格式 二是有效避免了多次对同一个表或几个表的访问 下面举个简单的例子来说明 例如表 students id
  • Android和H5那些不可描述的事情...

    今日科技快讯 近日 代表了750家移动运营商利益的全球移动通信系统协会的行业分析报告显示 禁止从中国供应商购买通信设备 将使欧洲5G网络成本增加约550亿欧元 并将导致该技术的推出延迟18个月左右 在路透社报道中提到的中国供应商 除了华为
  • 深度之眼(五)——Python组合数据类型

  • springcloud----负载均衡--Ribbon与LoadBalance

    简介 Spring Cloud Ribbon 是 Netflix Ribbon 实现的一套客户端 负载均衡工具 简单的说 Ribbon 是 Netflix 发布的开源项目 主要功能是提供 客户端的复杂均衡算法和服务调用 Ribbon 客户端
  • Pico-I / O嵌入式模块提供48点数字I / O接口

    WinSystems的PCO UIO48 G是具有中断事件检测功能的48点数字I O接口 Pico I O嵌入式模块旨在为Pico ITXe单板计算机提供低成本的I O扩展 该产品的主要功能之一是 它可以监视24个上升和下降的数字边沿转换
  • spring容器使用接口注入

    spring为何要注入接口 而注入实现类就会报错 如果只是单纯注入是可以用实现类接收注入对象的 但是往往开发中会对实现类做增强 如事务 日志等 实现增强的AOP技术是通过动态代理实现的 而spring默认是JDK动态代理 对实现类对象做增强
  • Linux(V4L2驱动)下获得Opencv摄像头属性(图像输出格式和是否发生往RGB的转换)的方法

    Opencv可通过cvGetCaptureProperty函数 或者VideoCapture get int proID 来获取摄像头输出图像的属性 但返回的是个double的值 如何查看图像输出的编码格式呢 其实可以看到 编码格式是个宏定
  • 通信仿真软件SystemView安装全流程详细解释(下载,安装,闪退,读条无反应)

    systemview简介 systemview 通信仿真软件 5 0 是一款模拟软件 这款软件主要是进行信号仿真的操作 支持支持滤波器设计 信号仿真和通信系统统计分析 软件内的功能非常丰富 操作也很简单 是一款非常不错的软件 有需要的小伙伴
  • HDFS读数据流程

    准备工作 1 首先客户端进入分布式文件系统去寻找数据块的位置 利用得到的文集文件块位置来要求名称节点返还部分块这些返还的节点会按照HADOOP中关于集群拓扑来得出客户端的距离然后进行排序 开始读取数据 1客户端利用FSDataInputSt
  • 聚观早报

    聚观365 9月14日消息 iPhone 15系列正式发布 月饼专利申请超10000项 五个女博士 自建研究院 2023中国民营企业研发十强公布 华为和小米达成全球专利交叉许可协议 iPhone 15系列正式发布 2023年苹果秋季新品发布
  • hook库

    detourattach detourRestoreAfterWith detourTransactionBegin detourUpdatethread getcurrentthread
  • 使用ChatGPT生成代码

    无需翻墙 1 下载安装cursor 首先进入官网 https www cursor so 点击 Download for windows 下载并安装好cursor 2 使用方法 打开后界面如下 打开 py或者 json文件 然后点击按键盘
  • echarts初始化宽度小于容器宽度

    查找资料是因为echarts的容器还没有创建出来的时候echarts就已经加载出来了 因为获取不到容器的宽高就会默认宽高100 是100px 所以会缩小在一起 因为我的代码中 echarts的容器的最外层的div给的样式是display n
  • 分布式事务学习总结

    1 基础概念 1 1 什么是事务 事务可以看做是一次大的活动 它由不同的小活动组成 这些活动要么全部成功 要么全部失败 1 2 本地事务 在计算机系统中 更多的是通过关系型数据库来控制事务 这是利用数据库本身的事务特性来实现的 因此叫数据库
  • echarts报错:Error in mounted hook: “TypeError: Cannot read properties of undefined (reading ‘init‘)“

    echarts安装创建图表时报这种错误 Error in mounted hook TypeError Cannot read properties of undefined reading init 1 具体报错内容 2 解决办法 原先大
  • Java基本数据类型

    Java中有以下几种基本数据类型 这些类型都是值类型 类型 值范围 大小 范围 boolean true或false 1位 char Unicode字符 16位 u0000 uFFFF byte 有符号整数 8位 128 127 short