Java 数据类型
数据类型用于对数据归类,以便开发者理解和操作。
基本数据类型
Java 确定了每种基本数据类型所占存储空间的大小,不会像其它语言那样随机器硬件架构的变化而变化,这使 Java 程序更具可移植性。
Java 中定义了如下的基本数据类型。
byte
表示整数,取值范围 -2 ^ 7 ~ 2 ^ 7 - 1,占 8 个 bit 位,1 个字节。
byte beVar = 100;
short
表示整数,取值范围 -2 ^ 15 ~ 2 ^ 15 - 1,占 16 个 bit 位,2 个字节。
short stVar = 200;
int
表示整数,取值范围 -2 ^ 31 ~ 2 ^ 31 - 1,占 32 个 bit 位,4 个字节,整数字面量的默认类型。
int itVar = 300;
long
表示整数,取值范围 -2 ^ 63 ~ 2 ^ 63 - 1,占 64 个 bit 位,8 个字节。赋值时,如果超过了 int 类型的取值范围,需要在数值后面加 L 或 l。
// 在 int 型的取值范围内时可用,不建议,最好加上 L
long lgVar1 = 400; // 赋值时,字面量后面要加 L 或 l
long lgVar2 = 400L;
float
表示单精度浮点数,取值范围 -3.4E ^ 38 ~ -1.4E ^ -45、1.4E ^ -45 ~ 3.4E ^ 38,E 表示以 10 为底的指数,占 32 个 bit 位,4 个字节。赋值时,需要在数值后面加 F 或 f,因为浮点数字面量的默认类型是 double。
不能用于表示精确值,如货币等,此时应该使用 BigDecimal 对象类型。
float ftVar = 3.14F; // 浮点数默认类型是 double,必须加 F
double
表示双精度浮点数,取值范围 -1.7E ^ 308 ~ -4.9E ^ -324、4.9E ^ -324 ~ 1.7E ^ 308,E 表示以 10 为底的指数,占 64 个 bit 位,8 个字节,浮点数字面量的默认类型。
不能用于表示精确值,如货币等,此时应该使用 BigDecimal 对象类型。
double deVar1 = 3.14;
double deVar2 = 3.14E2; // 314.0
double deVar3 = 3.14E-2; // 0.0314
char
表示单个字符,可以是中文字符,Java 内部进行字符处理时,采用 unicode 编码方式,具体编码格式是 UTF-16BE(2 或 4 个字节),取值范围 0 ~ 65535,占 16 个 bit 位,2 个字节,本质是一个无符号正整数(没有符号位),对应 unicode 编号。
char 只能表示 unicode 编号在 0 ~ 65535 的字符,超出范围的字符将使用两个 char 表示。
char 的字面量使用单引号 '' 括起来。
char crVar1 = 'A';
char crVar2 = '光';
char crVar3 = 97; // char 的本质就是无符号正整数
char crVar5 = 0x9a6c;
char crVar5 = '\u0000'; // unicode 编码
转义字符
在字符前面 \ 可以改变字符原来的含义,比如 ‘\0’、‘\t’ 等。
| 转义字符 | 含义 |
|---|---|
| \n | 换行 |
| \r | 回车 |
| \0 | 结束字符 |
| \s | 空格 |
| \’ | 单引号 |
| \" | 双引号 |
| \\ | 反斜杠 |
| \b | 退格符 |
boolean
表示真假值,取值为 true 、false,至于占用的空间,得看 JVM 的具体实现。
void
表示无数据,用在方法上,表示没有返回值。
⭐基本数据类型转换
在 Java 中,声明变量时需要指定数据类型,JVM 会根据数据类型申请相应的内存空间,分配的空间只能存储该类型的数据。如果赋值的数据类型和声明的数据类型不一致,则需要进行数据类型转换。

boolean 类型与其他7种类型的数据都不能进行转换,char 类型不支持自动转换成它,只支持强制转换。
自动转换
自动转换是隐式的,取值范围从小到大,可以直接转换,转换时会进行扩宽(widening conversion)。因为较大的类型(如 int)要保存较小的类型(如 byte),取值范围是足够的,不需要强制转换。
强制转换
强制转换是显式的,取值范围从大到小,必须强制转换,转换时会进行缩小(narrowing conversion)。
强制转换可能会损失精度。整数类型之间相互转换,如果整数超出目标类型范围,会对目标类型的范围取余数;从浮点类型转成整数类型,会发生截尾(truncation),也就是把小数部分去掉,只留下整数部分,且如果整数部分超出目标类型范围,一样将对目标类型的范围取余数。
// 实例
long lo = 99;
int i = (int) lo;
隐式转换
/*1、多类型混合运算时,会自动转成容量最大的数据类型,再进行计算,并返回相应类型的结果对于整数来说,如果没有 long 型,则提升至 int 型(不管有没有 int 型变量参与)2、在取值范围内时,整数字面量(int 型)赋值给 byte、short、char 时会自动转换3、在取值范围内时,常量和字面量的运算结果赋值给 byte、short、char 时会自动转换,有变量时就要强转4、赋值运算(+=、-=、...)会自动进行强转5、`char` 的运算是按 Unicode 编号进行的,在进行算术运算时会转换为 `int` 类型*/byte a = 100;
// a + 1 运算提升至 int 型,值在 byte 的取值范围内,但由于是变量和字面量运算,编译时不会优化,需要手动强转
byte b = a + 1; final byte c = 100;
// c + 1 运算提升至 int 型,值在 byte 的取值范围内,且是常量和字面量运算,编译时会优化,不需要手动强转
byte d = c + 1; // 100 + 1 运算提升至 int 型,值在 byte 的取值范围内,且是字面量和字面量运算,编译时会优化,不需要手动强转
byte f = 100 + 1;
对象数据类型
Java 是面向对象的语言,除了基本数据类型,其他都是对象数据类型,比如字符串、数组等。
- 类:class
- 接口:interface
- 数组:[](数组有个类 Array)
对象是什么?简单来说,对象可以理解为基本数据、其它对象数据的组合。比如一个人,他的姓名是一个字符串,年龄是一个整数。
对象数据类型同样存在类型转换。
相关文章:
Java 数据类型
数据类型用于对数据归类,以便开发者理解和操作。 基本数据类型 Java 确定了每种基本数据类型所占存储空间的大小,不会像其它语言那样随机器硬件架构的变化而变化,这使 Java 程序更具可移植性。 Java 中定义了如下的基本数据类型。 byte …...
Prometheus 监控云Mysql和自建Mysql(多实例)
本文您将了解到 Prometheus如何配置才能监控云Mysql(包括阿里云、腾讯云、华为云)和自建Mysql。 Prometheus 提供了很多种Exporter,用于监控第三方系统指标,如果没有提供也可以根据Exporter规范自定义Exporter。 本文将通过MySQL server exporter 来监控…...
Vue3中的h函数
文章目录简介简单使用参数使用计数器进阶使用函数组件插槽专栏目录请点击 简介 众所周知,vue内部构建的其实是虚拟DOM,而虚拟DOM是由虚拟节点生成的,实质上虚拟节点也就是一个js对象事实上,我们在vue中写的template,最终也是经过…...
阿尔法开发板 IMX6ULL 说明
一. IMX6ULL开发板 IMX6ULL开发板即正点原子的阿尔法(ALPHA)开发板,采用恩智浦芯片,cortex-A7架构的。 二. IM6ULL开发板说明 1. IO说明 对于IMX6ULL芯片,一个IO对应两个寄存器,第一个寄存器负责配置其复用功能,…...
Altium Designer19 #学习笔记# | 基础应用技巧汇总
全文目录一.元件符号库二.元件封装库1.AD09 集成元件库/封装库三.电路原理图1. 巧用查找"相似对象功能"1.1 查找相同元件1.2. 查找相同文本1.3. 查找相同网络 :E - S - C四.PCB原理图【AD PCB模式下的常用快捷键】PCB视图放大/缩小PCB视图左/右移动PCB切换…...
Python 元类编程实现一个简单的 ORM
概述 什么是ORM? ORM全称“Object Relational Mapping”,即对象-关系映射,就是把关系数据库的一行映射为一个对象,也就是一个类对应一个表,这样,写代码更简单,不用直接操作SQL语句。 现在我们就要实…...
《C++ Primer Plus》第18章:探讨 C++ 新标准(7)
C11 新增的其他功能 C11 增加了很多功能,本书无法全面介绍;另外,本书编写期间,其中很多功能还未得到广泛实现。然而,有些功能有必要简要地介绍一下。 并行编程 当前,为提高计算机性能,增加处…...
Redis学习(二):Redis安装测试
概述 Redis是什么 Redis, Remote Dictionary Server, 即远程字典服务。免费开源的数据库。 由C语言编写,支持网络,可基于内存亦可持久化的日志型、KV数据库,并提供所种语言的API。 Redis能干嘛 用于内存存储,持久化。rdb、ao…...
Vector - CAPL - 简介及数据结构
对于想进入车载行业或者已经在车载行业工作的朋友对于CAPL这个词都会相当的熟悉,都知道他是做车载网络测试脚本的语言,并且跟C有点类似,但是它到底是什么呢?CAPL全称(Communication Access Programming Language&#…...
20230304英语学习
What Would Happen if the Moon Disappeared Tomorrow? 如果明天月球消失了会怎样? The closest object to our planet, the Moon, may seem like Earth’s little sibling.Since its birth, the satellite has mostly just hung around, playing gravitational t…...
【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #
文章目录前言移除链表元素相交链表写在最后前言 本章的OJ练习也是相对简单的,只要能够理解解题的思路,并且依照这个思路能够快速的写出代码,我相信,你的链表水平已经足够了。 对于OJ练习(2) : ->传送门…...
【自用】SpringBoot项目通用类整理
文章目录全局Json序列化Controller日志切面全局异常拦截GlobalExceptionHandlerApiResultBusinessExceptionResponseEntityUtil全局返回体包装MP自动填充接口文档配置类自定义Async异步线程池本文主要整理各类项目中通用的配置类、工具类,便于复查自用。 全局Json序…...
动态规划法(总述)多阶段决策最优化问题
动态规划: 研究最优控制问题提出的 该问题有n个输入,问题的解由这n个输入组成,这个子集必须满足事先给定的条件,这些条件称为约束条件,满足约束条件的可行解可能不只有一个为了衡量可行解的优劣,通常以一些函数的形式&…...
MySQL跨服务器数据映射
MySQL跨服务器数据映射环境准备1. 首先是要查看数据库的federated引擎 开启/关闭 状态2. 打开任务管理器,并重启mysql服务3. 再次查看FEDERATED引擎状态,引擎已启动映射实现问题总结在日常的开发中经常进行跨数据库进行查询数据。 同服务器下跨数据库进…...
利用反射实现通过读取配置文件对类进行实例化-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)
【案例12-3】:利用反射实现通过读取配置文件对类进行实例化 【案例介绍】 1.案例描述 现在有一个项目,项目中创建了一个Person类,在Person类中定义了一个sleep()方法。在工程中还定义了一个Student类继承Person类,在Student类中…...
1.2 CSS文本属性
CSS Text(文本)属性: 定义文本外观,颜色,装饰,缩进,行间距来修饰文本 文本样式 文本缩进 text-indent文本水平对齐方式:text-align文本修饰:text-decoration行高 line-height CSS文本颜色属性…...
SpringCloud之认识微服务
文章目录一、传统项目转型二、走进 SpringCloud三、微服务项目搭建3.1 创建一个 SpringBoot 项目3.2 创建三个 Maven 子工程3.3 为子工程创建 application.yml3.4 引入依赖3.5 数据库 建库建表3.6 编写业务提示:以下是本篇文章正文内容,SpringCloud系列学…...
【go语言之thrift协议二之server端分析】
go语言之thrift协议二serverthrift.TProtocolFactoryTTransportReadWriteCloserContextFlusherReadSizeProviderTProtocolrunServerNewTServerSocketNewCalculatorHandlerNewCalculatorProcessorNewTSimpleServer4server.ServeListenAcceptLoopprocessRequests在上一篇文章分析…...
【办公类05-03】Python批量修改文件名前面的序号(已有的序号错了,需要改成正确的号码)
背景需求下载教程,手动输入编号,有一个编号错误,导致后面所有编号都错了。30实际是29,以此类推怎样才能快速修改编号数字?前期考虑到可能要改编号,所以在每个编号后面加“ ”(空格)&…...
定向模糊测试工具Beacon基本用法
Beacon是一个定向模糊测试工具,给定行号,能够定向探索行号附近的代码区域。主要思想是采用静态分析的方法获取到与目标有关的变量的最弱前置条件(weakest precondition)的信息,并在相关位置插入断言,来提前…...
保姆级教程:在ArcGIS Pro插件中集成你的自定义工具箱(以‘消除重复要素’为例)
从脚本到按钮:ArcGIS Pro插件开发实战指南 在GIS日常工作中,我们常常会遇到一些重复性的数据处理任务。比如数据质检环节的"消除重复要素"操作,虽然可以通过Python脚本实现,但每次都需要打开IDE或Python窗口执行代码&am…...
Taotoken的TokenPlan套餐如何实现更经济的模型调用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的TokenPlan套餐如何实现更经济的模型调用 1. 理解TokenPlan的计费模式 在模型应用开发过程中,成本的可预测性…...
文件-语言-系统:基础IO-2.0——IO重定向接口,语言层缓冲区,系统级缓冲区。内核级分析!
bit::Shadow✧(≖ ◡ ≖✿ 目录 重定向接口dup2() ">" ">>" "<" 函数原型 输出重定向1和2的使用 文件描述符表 ./a.out运行: "./a.out >"默认重定向是fd 1 合并标准输入输出 缓冲区 什么是缓冲…...
基于ESP32与MQTT的家庭环境监测系统:从传感器选型到数据可视化实战
1. 项目概述与核心价值最近几年,我身边越来越多的朋友开始关注家里的空气质量、温湿度这些看不见摸不着,但又实实在在影响生活舒适度和健康的环境指标。从新装修的房子担心甲醛,到有老人小孩的家庭在意PM2.5和二氧化碳浓度,再到南…...
告别CAJ格式困扰:3分钟学会用开源工具将知网文献转为PDF
告别CAJ格式困扰:3分钟学会用开源工具将知网文献转为PDF 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/…...
Windows Cleaner深度解析:5大核心模块彻底解决系统空间不足问题
Windows Cleaner深度解析:5大核心模块彻底解决系统空间不足问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款完全免费开源的…...
MeloTTS实战指南:解决多语言TTS部署中的核心挑战
MeloTTS实战指南:解决多语言TTS部署中的核心挑战 【免费下载链接】MeloTTS High-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean. 项目地址: https://gitcode.com/GitHub_Trendin…...
AutoPentest:面向红队的渗透测试决策引擎架构解析
1. 这不是又一个“自动化扫描器”,而是一套能替你做决策的渗透测试工作流引擎AutoPentest这个名字,第一眼容易让人联想到Nmap加个for循环、或者Burp Suite里点几下Intruder——但实际用过的人很快会意识到:它根本不在同一个维度上。我第一次在…...
如何快速实现U盘文件自动备份:USBCopyer终极指南
如何快速实现U盘文件自动备份:USBCopyer终极指南 【免费下载链接】USBCopyer 😉 用于在插上U盘后自动按需复制该U盘的文件。”备份&偷U盘文件的神器”(写作USBCopyer,读作USBCopier) 项目地址: https://gitcode.…...
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ. 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify DeTikZify是一款革命性的多模态…...
