Java 数据类型

news2025/1/19 14:30:26

数据类型用于对数据归类,以便开发者理解和操作。

基本数据类型

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 类型的取值范围,需要在数值后面加 Ll

// 在 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 个字节。赋值时,需要在数值后面加 Ff,因为浮点数字面量的默认类型是 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

表示真假值,取值为 truefalse,至于占用的空间,得看 JVM 的具体实现。

void

表示无数据,用在方法上,表示没有返回值。

⭐基本数据类型转换

在 Java 中,声明变量时需要指定数据类型,JVM 会根据数据类型申请相应的内存空间,分配的空间只能存储该类型的数据。如果赋值的数据类型和声明的数据类型不一致,则需要进行数据类型转换。

image.png

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)

对象是什么?简单来说,对象可以理解为基本数据、其它对象数据的组合。比如一个人,他的姓名是一个字符串,年龄是一个整数。

对象数据类型同样存在类型转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MobileNet V2】MobileNet V2

目录1、简介2、论文创新点1)倒残差结构 -- Inverted residual block2)ReLU63、网络结构文献名称:MobileNetV2: Inverted Residuals and Linear Bottlenecks 发表时间:2018年 下载地址:https://openaccess.thecvf.com/c…

Vue基础入门讲义(四)-组件化

文章目录1.引言2.定义全局组件3.组件的复用4.局部注册5.组件通信5.1.父向子传递props5.2.传递复杂数据5.3.子向父的通信1.引言 在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分。例如可能会有相同的头部导航。 但是如果…

第二章SpringBoot基础学习

文章目录SpringBoot依赖管理特性依赖管理开发导入starter场景启动器SpringBoot自动配置特性自动配好Tomcat自动配好SpringMVC默认的包结构各种配置拥有默认值按需加载所有自动配置项SpringBoot注解底层注解ConfigurationImport导入组件Conditional条件装配ImportResource导入Sp…

Python入门自学进阶-Web框架——33、瀑布流布局与组合查询

一、瀑布流,是指页面布局中,在显示很多图片时,图片及文字大小不相同,导致页面排版不美观如上图,右边的布局,因为第一行第一张图片过长,第二行的第一张被挤到第二列了。示例:def flow…

大数据框架之Hadoop:MapReduce(八)常见错误及解决方案

1、导包容易出错。尤其Text和CombineTextInputFormat。 2、Mapper中第一个输入的参数必须是LongWritable或者NullWritable,不可以是IntWritable. 报的错误是类型转换异常。 3、java.lang.Exception: java.io.IOException: Illegal partition for 13926435656 (4)&…

51单片机LCD1602的使用

文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…

CPU扫盲-CPU如何执行指令以及流水线技术

在CPU扫盲-CPU与指令集中阐述了CPU与指令集之间的关系,并在CPU扫盲-自研指令集中以创造者的身份深入讲解了指令集,这篇文章则是针对CPU的专场,以x86架构下的CPU为例具体分析一下CPU如何执行指令。 计算机基本硬件由控制器、储存器、运算器、输…

基于java的五子棋游戏设计

技术:Java、JSP等摘要:随着互联网迅速的发展,网络游戏已经成为人们普遍生活中不可或缺的一部分,它不仅能使人娱乐,也能够开发人的智力,就像本文所主要讲的五子棋游戏一样能挖掘人们聪明的才干与脑袋的机灵程…

【大数据 AI 人工智能】数据科学家必学的 9 个核心机器学习算法

如今,机器学习正改变着我们的世界。借助机器学习(ML),谷歌在为我们推荐搜索结果,奈飞在为我们推荐观看影片,脸书在为我们推荐可能认识的朋友。 机器学习从未像在今天这样重要。但与此同时,机器学习这一领域也充斥着各种术语,晦涩难懂,各种机器学习的算法每年层出不穷…

思科2.7.6 Packet Tracer - Implement Basic Connectivity(作业)

Packet Tracer - 实施基本连接地址分配表目标第 1 部分:对 S1 和 S2 执行基本配置第 2 部分:配置 PC第 3 部分:配置交换机管理界面背景信息在这个练习中,您会首先执行基本的交换机 配置。然后您会通过在交换机和 PC 上配置 IP 编址…

【C++】string

【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介(具体使用和底层转到模拟实现) 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…

数影周报:LastPass数据泄露事件最新细节

本周看点:LastPass:关键运维员工遭定向攻击;Waymo今年第二轮裁掉137名员工;国家网信办发布《个人信息出境标准合同办法》;京麦商家“取消订单页面”升级;“智研汇”获千万级天使轮投资......数据安全那些事…

ubuntu-8-安装nfs服务共享目录

Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器及使用教程 ubuntu16.04挂载_如何在Ubuntu 20.04上设置NFS挂载 Ubuntu 20.04 设置时区、配置NTP同步 timesyncd 代替 ntpd 服务器 10.0.2.11 客户端 10.0.2.121 NFS简介 (1)什么是NFS NFS就是Network File System的缩写&#xf…

W800系列||STM32最小版|CKLINK|待完善|学习(3-2):自制cklink调试工具测试(win11系统识别错误待解决)

续前文: W800系列|ST-LINK|STM32最小版|HEX文件|CKLINK|DebugServer|学习(3-1):自制cklink调试工具_打酱油的工程师的博客-CSDN博客 硬件接线 CK-LINK W806 3V3 3V3 RST RST(复位脚) TCK CLK&…

MySQL日志管理

日志管理在数据库保存数据时,有时候不可避免会出现数据丢失或者被破坏,这种时候,我们必须保证数据的安全性和完整性,就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因:误删除数据库数据库工作时&a…

openpnp - error - 回位精度差的问题

文章目录openpnp - error - 回位精度差的问题概述齿隙矫正方法不能用openpnp默认的, 要自己选合适的方法ENDopenpnp - error - 回位精度差的问题 概述 用openpnp向导进行完x/y齿隙校正后, 进行回位精度测试. 在设备上挑选2个点: 主基准点次基准点 都是固定位置(将带mark点的…

Go中sync 包的 Once 使用

文章目录背景One 简介示例注意源码解读背景 在系统初始化的时候,某些代码只想被执行一次,这时应该怎么做呢,没有学习 Once 前,大家可能想到 声明一个标识,表示是否初始化过,然后初始化这个标识加锁&#x…

Lazada(来赞达)箱包什么产品好卖?东南亚热销国家选品分析

东南亚市场:存在巨大的跨境电商出口机遇 和2021年前对比,2022年越南、马来西亚等东南亚国家普遍实现了贸易正增长,欧美国家则多仍处于负增长状态。 同时2022年欧美等发达经济体通胀压力迅速抬升,这直接影响到国家间货币汇率&…

微信小程序如何配置并使用less?

微信小程序如何配置并使用less?1、在VScode中下载Less插件2、在微信小程序中依次点击如下按钮3、选中刚在vscode中下载安装的插件文件4、在设置中选中编辑器设置5、找到less进行json配置6、在json文件中的less.compile添加如下配置7、如何使用1、在VScode中下载Less…

深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类

A. Point&Circle(复合类与构造) 题目描述 类Point是我们写过的一个类,类Circle是一个新的类,Point作为其成员对象,请完成类Circle的成员函数的实现。 在主函数中生成一个圆和若干个点,判断这些点与圆的位置关系,…