Java 常用语法极简通关(二):八种基本类型与 String——Java 类型世界的两大阵营
开篇一个物资采购结算的小程序第一章我们看到了 Java 程序的骨架这一章往里走看看装数据的容器——类型。还是老规矩先看一段活的代码煤矿物资采购的结算程序算出各种物料的金额并汇总。public class PurchaseApp { public static void main(String[] args) { // 物料1锚杆 String itemName1 锚杆; int quantity1 1200; // 数量根 double price1 18.5; // 单价元 // 物料2液压油 String itemName2 液压油; int quantity2 40; // 数量桶 double price2 320.0; // 单项金额 数量 × 单价 double amount1 quantity1 * price1; double amount2 quantity2 * price2; // 汇总 double total amount1 amount2; long totalInFen (long) (total * 100); // 折算成分转成整数 // 是否超过预算 double budget 40000.0; boolean overBudget total budget; // 采购员等级用单个字符表示 char buyerLevel A; System.out.println(itemName1 金额 amount1 元); System.out.println(itemName2 金额 amount2 元); System.out.println(合计 total 元 totalInFen 分); System.out.println(是否超预算 overBudget); System.out.println(采购员等级 buyerLevel); } }运行结果锚杆 金额22200.0 元 液压油 金额12800.0 元 合计35000.0 元3500000 分 是否超预算false 采购员等级A这段代码里Java 的八种基本类型出现了六种int、double、boolean、char、long外加转换剩下的byte、short、float我们马上讲到。先立一个总纲Java 的类型分两大阵营八种基本类型primitive是值本身其余一切——String、数组、你自己写的类——都是引用类型。这两个阵营的行为差异是新手无数 bug 的源头。本章讲透它们。第一部分八种基本类型——一张表就够了Java 有且只有八种基本类型分四类分类类型占用空间举例日常使用频率整数byte1 字节-128~127byte b 100;低整数short2 字节short s 5000;低整数int4 字节约 ±21 亿int age 30;极高整数默认用它整数long8 字节long fen 3500000L;中int 装不下时用小数float4 字节float f 3.14F;低小数double8 字节double price 18.5;极高小数默认用它字符char2 字节char level A;中布尔boolean—boolean ok true;极高按本系列只讲常用的原则给你三条极简结论整数就用int除非确定会超过 21 亿比如毫秒时间戳、以分为单位的大金额那就用long数值后面加Llong t 1723000000000L;小数就用double。float要加F后缀、精度还低业务代码里基本不用知道它存在即可。byte、short、float日常几乎不手写多在底层 IO、旧代码里出现见到了能看懂就行。两个细节写整数字面量时Java 默认当 int 处理写小数字面量默认当 double 处理。所以float f 3.14;会报错3.14 是 double不能直接塞进更小的 float必须写3.14F。char用单引号只能包一个字符A、中都合法。boolean只有true和false没有第三态也不能用 0 和 1 代替。第二部分类型转换——自动的和强制的案例里有两处转换正好把两种转换方式都演示了。自动转换小杯倒进大杯不用管double amount1 quantity1 * price1; // int × double → doublequantity1是 intprice1是 doubleint 乘之前会被自动提升为 double结果是 double。规则一句话范围小的类型放进范围大的类型自动转不丢数据。转换链是byte → short → int → long → float → double char ↗所以int i A;合法i 的值是 65字符的本质是 Unicode 编码数字double d 100;也合法。强制转换大杯倒进小杯自己负责long totalInFen (long) (total * 100);total * 100是 double要装进 long——范围大的进范围小的可能丢数据编译器要求你显式确认写法是在值前面加(目标类型)double d 9.99; int i (int) d; // i 是 9不是 10强转直接砍掉小数不做四舍五入新手必记(int)是截断不是四舍五入。想四舍五入用Math.round()第十章讲工具类时会细说。第三部分String——最常用的引用类型基本类型讲完了现在看另一大阵营的代表。String 是 Java 里使用频率最高的类型没有之一但它不是基本类型是一个类。这个事实引出三个必知点。必知点一字符串是不可变的immutableString s 锚杆; s s 12m;第二行并不是修改了原来的字符串而是新建了一个字符串对象让 s 指向新对象旧对象等待垃圾回收。日常用没问题但在循环里反复拼接会产生大量临时对象——性能坑第四章讲 StringBuilder 时解决它。必知点二字符串拼接用其他类型自动转字符串System.out.println(合计 total 元);任何类型和字符串用拼接都会先被转成字符串。注意一个顺序陷阱System.out.println(结果 1 2); // 输出结果12 System.out.println(结果 (1 2)); // 输出结果3从左往右算第一行里结果 1先拼成了字符串后面的 2 只能跟着拼加括号让加法先算就对了。必知点三重点比较字符串内容必须用 equals不能用 这是 Java 新手最经典的坑没有之一。看这段代码String a new String(锚杆); String b new String(锚杆); System.out.println(a b); // false ← 惊不惊喜 System.out.println(a.equals(b)); // true内容明明一样却返回 false。原因在于两大阵营的本质区别基本类型变量里存的就是值本身比较的就是值int x 5; int y 5;则x y为 true天经地义。引用类型变量里存的是对象的地址内存中的位置。a和b是两个不同的对象地址不同所以为 false。对引用类型回答的问题是是不是同一个对象而不是内容一不一样。想比较内容要用 String 类提供的equals方法String input 维修; if (input.equals(维修)) { // 正确姿势 System.out.println(生成维修工单); }实际开发中更稳妥的写法是把已知的字面量放前面避免 null 报错if (维修.equals(input)) { ... }这种写法即使input是 null 也不会抛空指针异常——空指针NullPointerException是 Java 程序最常见的事故第八章异常处理会专门讲。补一个容易混淆的点直接写双引号的字符串字面量会被 JVM 放进字符串常量池复用所以String x abc; String y abc; System.out.println(x y); // 居然是 true常量池里同一个对象正因为这种有时 true 有时 false的不确定性规矩只有一条比较字符串内容永远用 equals忘掉 在字符串上的存在。常踩的坑排雷清单字符串用 比较本章最大的坑见上。内容比较一律equals。整数相除丢掉小数int result 7 / 2;结果是 3不是 3.5——int 除 int 得 int。想要小数至少一边写成 double7.0 / 2或(double) 7 / 2。强转当四舍五入用(int) 9.99得 9。要四舍五入请用Math.round()。long 忘记加 Llong t 1723000000000;编译报错因为字面量默认 int超范围了。加L就好。boolean 写 0/1if (flag 1)在 boolean 上行不通Java 的 boolean 和数字完全不通婚。char 和 String 混用引号维修两个字符进单引号编译报错String s A;也报错——类型不匹配。单引号 char、双引号 String泾渭分明。本章小结Java 类型分两大阵营八种基本类型存值本身引用类型String、数组、类存地址。日常取舍整数int、大额long L、小数double、真假boolean、单字符char A其余三种认识即可。转换小进大自动转大进小加(类型)强转强转是截断不是四舍五入。String 是类、不可变拼接用注意从左到右的顺序陷阱。比较字符串内容用equals永远不用——引用类型的比的是地址。下一章运算符与流程控制——通过一个巡检成绩评级 批量统计的案例把 if、switch、三种循环讲透重点拆解 switch 的 break 穿透和增强 for 为什么成为遍历的主流。

相关新闻

Excel隐藏功能全解析:从数据清洗到自动化报表

Excel隐藏功能全解析:从数据清洗到自动化报表

1. Excel的隐藏实力:为什么它被严重低估?大多数人第一次接触Excel时,往往把它当作一个简单的表格工具——用来记录数据、制作清单或者计算简单的加减乘除。但作为一个用了15年Excel的老用户,我可以负责任地说,Excel的强…

2026/11/4 3:45:37 阅读更多 →
RIP 开发者指南:如何在 Rust 项目中集成 Python 包安装能力?

RIP 开发者指南:如何在 Rust 项目中集成 Python 包安装能力?

RIP 开发者指南:如何在 Rust 项目中集成 Python 包安装能力? 【免费下载链接】rip Solve and install Python packages quickly with rip (pip in Rust) 项目地址: https://gitcode.com/gh_mirrors/rip2/rip RIP(pip in Rust&#xff…

2026/11/4 10:49:06 阅读更多 →
数据库入门:核心概念、架构与SQL实战指南

数据库入门:核心概念、架构与SQL实战指南

1. 数据库入门:从零开始理解数据存储的核心概念 第一次接触"数据库"这个概念时,我脑海中浮现的是一排排金属柜子塞满文件夹的画面。直到真正开始使用数据库管理系统,才发现它远比物理文件柜强大百倍。数据库本质上是一个电子化的数…

2026/10/28 14:43:59 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/7 12:08:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/8 1:35:05 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/7 12:08:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻