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/10/17 11:18:38 阅读更多 →
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/10/17 11:19:43 阅读更多 →
数据库入门:核心概念、架构与SQL实战指南

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

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

2026/10/16 6:26:06 阅读更多 →

最新新闻

从研发到人事:AI Agent在制造业的完整价值地图(附数字)——TaoToken统一Key打通企业级智能自动化落地评测

从研发到人事:AI Agent在制造业的完整价值地图(附数字)——TaoToken统一Key打通企业级智能自动化落地评测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 11:20:23 阅读更多 →
RabbitMQ TTL与死信队列实战:从原理到延迟队列落地

RabbitMQ TTL与死信队列实战:从原理到延迟队列落地

我很久没写过消息队列相关的内容了。今天这篇想把 RabbitMQ 里两个经常被放在一起讲、又经常被搞混的概念彻底说清楚——TTL 和死信队列。如果你已经在用 RabbitMQ 做异步任务或者系统解耦,这两个东西大概率是你迟早要碰的,尤其是做延迟任务、超时控制、…

2026/10/17 11:20:23 阅读更多 →
把CUDA-Q量子程序接入Amazon Bedrock AgentCore的实践指南

把CUDA-Q量子程序接入Amazon Bedrock AgentCore的实践指南

把 CUDA-Q 的量子程序挂进 Amazon Bedrock AgentCore,本质上是在做一件事:让大模型 Agent 把自然语言问题翻译成量子计算的 API 调用,再把量子程序的运行结果翻译回自然语言。很多人听到“量子计算 Agent”的第一反应是炫技,但真…

2026/10/17 11:20:23 阅读更多 →
从数组局限性到链表实现:单链表、双链表与循环链表完全解析

从数组局限性到链表实现:单链表、双链表与循环链表完全解析

从数组的局限性理解链表的诞生动机1.1 数组这个“老实人”的三处软肋我第一次接触链表时的反应,和很多初学者一样:数组用得好好的,非要搞个链表出来,这不是自己给自己找麻烦吗?等真正动手写程序、遇到实际业务场景之后…

2026/10/17 11:20:23 阅读更多 →
Mosaico快速上手教程:5分钟安装mosaicod并用Python SDK完成第一次连接

Mosaico快速上手教程:5分钟安装mosaicod并用Python SDK完成第一次连接

【免费下载链接】mosaico Mosaico - The data platform for Physical AI 项目地址: https://gitcode.com/gh_mirrors/mosai/mosaico 点击查看 免费下载 Mosaico 是面向机器人与 Physical AI 的开源数据平台。本教程带你用最快的方式完成 mosaicod 守护进程安装&…

2026/10/17 11:20:23 阅读更多 →
开源引擎OpenClaw:让经典老游戏在现代设备上重生

开源引擎OpenClaw:让经典老游戏在现代设备上重生

1. 先说清楚:OpenClaw到底是个什么东西1.1 “龙虾”这个外号是怎么来的最近怀旧游戏圈又聊起一个叫 OpenClaw 的项目,社区里有人叫它“龙虾”,有人叫它“爪子引擎”。名字听着挺萌,其实一点都不复杂:Claw 这个英文词翻…

2026/10/17 11:19:23 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →