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

📅 2026/8/18 18:20:55
【初学者必看】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 / falsefalse1.2 重点提醒(1)byte的坑很多人以为byte范围是0-255其实是-128-127。因为Java的byte是有符号的。(2)long类型赋值必须加Llongmoney10000000000L;// 不加L会报错因为整数默认是int(3)float必须加ffloatprice19.9f;// 不加f会报错小数默认是double(4)char可以赋整数对应ASCII/Unicodecharc65;// 对应字符ASystem.out.println(c);// 输出A第二部分类型转换2.1 自动类型转换隐式转换规则小范围 → 大范围自动发生无信息丢失。顺序byte → short → int → long → float → double注意int转float可能丢失精度但语法允许inti100;longli;// 自动转换floatfl;// 自动转换可能丢失精度doubledf;// 自动转换2.2 强制类型转换显式转换规则大范围 → 小范围需要强制可能丢失数据。doubled100.5;inti(int)d;// 强制转换结果为100小数部分被截断⚠️ 经典陷阱byte b (byte) 130; // 130超出byte范围结果是多少答案-126因为溢出后循环计算2.3 表达式中的类型提升规则表达式运算时所有byte/short/char都会被自动提升为int。bytea10;byteb20;bytecab;// ❌ 编译错误ab结果是int需要强制转换bytec(byte)(ab);// ✅ 正确第三部分运算符3.1 算术运算符运算符含义示例加a b-减a - b*乘a * b/除整数除法取整5 / 2 2%取模余数5 % 2 1⚠️ 除法陷阱inta5;intb2;System.out.println(a/b);// 输出2不是2.5// 想得到小数至少有一个操作数是浮点数System.out.println(5.0/2);// 输出2.53.2 关系运算符运算符含义结果类型等于boolean!不等于boolean大于boolean大于等于boolean小于boolean小于等于boolean⚠️ 两个常见坑点1. 与 的区别是比较运算符是赋值运算符。新手经常写错if(a5){}// ❌ 编译错误a5是赋值语句结果是int类型if(a5){}// ✅ 正确比较a是否等于52.浮点数不要用 直接比较floatf0.1f;doubled0.1;System.out.println(fd);// false精度不同应使用差值阈值判断Math.abs(f-d)0.000013.3 逻辑运算符⚠️ 短路现象inti0;if(i!010/i0){// 因为i!0为false右边10/i不会执行避免了除零异常}3.4 赋值运算符直接赋值ab → aab-a-b → aa-b*a*b → aa*b/a/b → aa/b%a%b → aa%b3.5 自增自减运算符i 先自增再取值 i先取值再自增--i 先自减再取值 i--先取值再自减经典面试题inti0;intjii;// i先取值0i变为1// ii先变为2取值2// j 0 2 2// i最终为2System.out.println(ii, jj);// i2, j23.6 三元运算符条件?表达式1:表达式2// 条件为true返回表达式1否则返回表达式2intmax(ab)?a:b;第四部分运算符优先级建议背下来从高到低⚠️ 不记得优先级怎么办加括号 永远不要依赖记忆。写(a b) * c比a b * c更清晰也更安全。第五部分易犯的3个错误错误1整型除法得到小数javadoubleresult5/2;// 结果是2.0不是2.5正确1double result 5.0 / 2; 或 (double)5 / 2错误2byte/short运算后不强制转换byteb110;byteb220;byteb3b1b2;// 编译错误正确5byte b3 (byte)(b1 b2);错误3 比较浮点数floatf0.1f;doubled0.1;System.out.println(fd);// false精度不同正确3比较浮点数应使用差值阈值如Math.abs(f - d) 0.00001第六部分总结 本文是《Java后端从入门到进阶》系列的第2篇免费开放。数据类型和运算符是Java大厦的地基。但如果你只停留在“会用”层面面试时会很吃亏。面试官最爱问switch支持哪些数据类型答案可不只是int和除了短路还有什么区别如何用位运算高效判断奇偶这些进阶内容我会在后续付费专栏中深度讲解每篇附带完整代码示例可直接运行面试真题解析大厂题库常见坑点复盘帮你少走弯路 下期预告《流程控制if/else、循环、switch》免费发布记得关注。如果今天的内容对你有帮助欢迎点赞、收藏、评论。遇到问题评论区留言我会一一回复。