当前位置: 首页 > news >正文

【初学者必看】Java的8种基础数据类型(附运算符优先级表)

Java基础数据类型与运算符

    • 引言
    • 第一部分:8种基础数据类型
    • 第二部分:类型转换
    • 第三部分:运算符
    • 第四部分:运算符优先级(建议背下来)
    • 第五部分:易犯的3个错误
    • 第六部分:总结

引言

大家好,我是菜程序。昨天我们搞定了Java环境搭建,成功跑出了第一个Hello World。今天正式进入Java语法世界的第一关——基础数据类型和运算符。

这大概是新手最先接触的内容,但也是最容易埋坑的地方。我见过太多人学完基础后,面试时被问“byte的取值范围是多少”一脸懵,或者在写循环时因为运算符优先级搞错而debug一下午。

这篇文章不讲废话,直接上干货。读完你将掌握:8种基础数据类型的取值范围和默认值;类型转换的规则;运算符的优先级以及新手易犯的错误和解方式。

第一部分:8种基础数据类型

1.1 Java是强类型语言,每个变量都必须声明类型。基础数据类型Primitive Type)是Java的基石,分为4类8种:

类别数据类型字节数取值范围默认值
整数byte1-128 ~ 1270
整数short2-32768 ~ 327670
整数int4-2^31 ~ 2^31-1 (约±21亿)0
整数long8-2^63 ~ 2^63-10L
浮点float4约 ±3.4E380.0f
浮点double8约 ±1.8E3080.0d
字符char20 ~ 65535 (Unicode)‘\u0000’
布尔boolean1 (官方未精确定义)true / falsefalse

1.2 重点提醒

(1)byte的坑:很多人以为byte范围是0-255,其实是-128-127。因为Java的byte是有符号的。

(2)long类型赋值必须加L:

longmoney=10000000000L;// 不加L会报错,因为整数默认是int

(3)float必须加f:

floatprice=19.9f;// 不加f会报错,小数默认是double

(4)char可以赋整数(对应ASCII/Unicode):

charc=65;// 对应字符'A'System.out.println(c);// 输出A

第二部分:类型转换

2.1 自动类型转换(隐式转换)

规则:小范围 → 大范围,自动发生,无信息丢失。
顺序:byte → short → int → long → float → double
(注意:int转float可能丢失精度,但语法允许)

inti=100;longl=i;// 自动转换floatf=l;// 自动转换(可能丢失精度)doubled=f;// 自动转换

2.2 强制类型转换(显式转换)

规则:大范围 → 小范围,需要强制,可能丢失数据。

doubled=100.5;inti=(int)d;// 强制转换,结果为100(小数部分被截断)

⚠️ 经典陷阱:byte b = (byte) 130; // 130超出byte范围,结果是多少?
答案:-126(因为溢出后循环计算)

2.3 表达式中的类型提升

规则:表达式运算时,所有byte/short/char都会被自动提升为int
bytea=10;byteb=20;bytec=a+b;// ❌ 编译错误!a+b结果是int,需要强制转换bytec=(byte)(a+b);// ✅ 正确

第三部分:运算符

3.1 算术运算符

运算符含义示例
+a + b
-a - b
*a * b
/除(整数除法取整)5 / 2 = 2
%取模(余数)5 % 2 = 1

⚠️ 除法陷阱:

inta=5;intb=2;System.out.println(a/b);// 输出2,不是2.5// 想得到小数:至少有一个操作数是浮点数System.out.println(5.0/2);// 输出2.5

3.2 关系运算符

运算符含义结果类型
==等于boolean
!=不等于boolean
>大于boolean
>=大于等于boolean
<小于boolean
<=小于等于boolean

⚠️ 两个常见坑点:
1.== 与 = 的区别:==是比较运算符,=是赋值运算符。新手经常写错:

if(a=5){}// ❌ 编译错误,a=5是赋值语句,结果是int类型if(a==5){}// ✅ 正确,比较a是否等于5

2.浮点数不要用 == 直接比较:

floatf=0.1f;doubled=0.1;System.out.println(f==d);// false(精度不同)应使用差值阈值判断:Math.abs(f-d)<0.00001

3.3 逻辑运算符

⚠️ 短路现象:

inti=0;if(i!=0&&10/i>0){// 因为i!=0为false,右边10/i不会执行,避免了除零异常}

3.4 赋值运算符

=直接赋值+=a+=b → a=a+b-=a-=b → a=a-b*=a*=b → a=a*b/=a/=b → a=a/b%=a%=b → a=a%b

3.5 自增自减运算符

++i 先自增,再取值 i++先取值,再自增--i 先自减,再取值 i--先取值,再自减

经典面试题:

inti=0;intj=i+++++i;// i++:先取值0,i变为1// ++i:i先变为2,取值2// j = 0 + 2 = 2// i最终为2System.out.println("i="+i+", j="+j);// i=2, j=2

3.6 三元运算符

条件?表达式1:表达式2// 条件为true返回表达式1,否则返回表达式2intmax=(a>b)?a:b;

第四部分:运算符优先级(建议背下来)

从高到低:


⚠️ 不记得优先级怎么办?
加括号! 永远不要依赖记忆。写(a + b) * c比a + b * c更清晰,也更安全。

第五部分:易犯的3个错误

错误1:整型除法得到小数

javadoubleresult=5/2;// 结果是2.0,不是2.5

正确1:double result = 5.0 / 2; 或 (double)5 / 2

错误2:byte/short运算后不强制转换

byteb1=10;byteb2=20;byteb3=b1+b2;// 编译错误

正确5:byte b3 = (byte)(b1 + b2);

错误3:== 比较浮点数

floatf=0.1f;doubled=0.1;System.out.println(f==d);// false(精度不同)

正确3:比较浮点数应使用差值阈值,如Math.abs(f - d) < 0.00001

第六部分:总结

📌 本文是《Java后端从入门到进阶》系列的第2篇,免费开放。

数据类型和运算符是Java大厦的地基。但如果你只停留在“会用”层面,面试时会很吃亏。面试官最爱问:

switch支持哪些数据类型?(答案可不只是int)

&和&&除了短路,还有什么区别?

如何用位运算高效判断奇偶?

这些进阶内容,我会在后续付费专栏中深度讲解,每篇附带:

完整代码示例(可直接运行)

面试真题解析(大厂题库)

常见坑点复盘(帮你少走弯路)

💡 下期预告:《流程控制:if/else、循环、switch》,免费发布,记得关注。

如果今天的内容对你有帮助,欢迎点赞、收藏、评论。遇到问题评论区留言,我会一一回复。

http://www.cnnetsun.cn/news/4086868.html

相关文章:

  • Sigrity仿真全流程实战(SOC + 4G + MCU)
  • 嵌入式椭圆曲线加密实战指南:一文读懂 micro-ecc 如何守住资源受限设备的密钥安全
  • scrcpy 零基础投屏指南:10 分钟把安卓手机搬上电脑大屏
  • RaBitQ 量化技术实战解密:用每维 1 比特的压缩把亿级向量检索速度拉高一个数量级
  • 新员工如何快速接手项目?AI平台辅助上下文理解与文档重建
  • 深入Glance代码预览:Chroma语法高亮引擎如何让100+语言源码优雅呈现
  • dotnet 进阶篇
  • 如何参与 cavif-rs 开源贡献?从源码构建到提交 PR 的完整指南
  • ESP8266_ArtNetNode_v2 快速上手指南:10 分钟完成首次开机配置与热点连接
  • 计算机毕业设计之供应商管理系统
  • SideWaffle动态模板系统原理:从Git仓库自动拉取并构建模板的完整解析
  • 13.79万起!F7x极智科技版上市,轿跑SUV的智能体验如何重塑市场?
  • 3DS存档自救指南:JKSM免费备份工具5分钟上手,彻底告别存档丢失噩梦
  • 【OSI网络七层模型】整体框架
  • 企业微信拉人进群API怎么调用?客户群邀请成员教程
  • 鸿蒙掌上驾考宝典应用开发49:鸿蒙推送服务——PushUtils 与通知管理
  • 常用git指令
  • VBrowser-Android多线程下载原理:分片下载与文件合并的完整实现
  • CKAN模组管理终极指南:3步告别KSP手动装MOD的噩梦
  • ComfyUI 完整入门指南:从零打造可视化 AI 图像视频生成工作流
  • 游戏黑屏、显卡花屏查不出原因?5分钟一次显存检测就真相大白
  • 收藏!AI大模型人才抢手,小白也能抓住高薪机遇,小白必看!
  • 手写Zeal 8-bit OS设备驱动:从0到1实现键盘与串口驱动的完整教程
  • VBrowser-Android架构剖析:DownloadManager任务调度与前台下载服务
  • memtest_vulkan显存稳定性测试上手教程:5分钟揪出显卡“暗病“
  • WarcraftHelper:魔兽争霸3终极优化工具,三步免费解锁宽屏、高帧率与大地图
  • Esp-radio 硬件接线完全教程:ESP8266、VS1053 与 TFT 显示屏的详细接线图解析
  • Linux 网络接口命名规则
  • auto-value-parcel是什么?Android开发者告别手写Parcelable的终极利器
  • 三个平台一套手感:跨平台文本编辑器 Notepad-- 从安装到上手的实战笔记