Java 基础:注释
- 书写注释是一个非常好的习惯
- 平时写代码一定要规范
- 注释不会被执行,是给我们写代码的人看的
- Java 中的注释有三种
- 单行注释
- 多行注释
- 文档注释
首先创建一个空项目

系统讲解 Java 基础,涵盖注释类型、标识符命名规范及关键字规则。重点解析八大基本数据类型(byte, short, int, long, float, double, char, boolean)的内存占用、取值范围及使用场景。深入探讨整数进制转换(二进制、八进制、十六进制)、浮点数精度问题及 BigDecimal 替代方案,阐述字符编码逻辑与布尔类型限制。此外,整理常见面试题解析,提供答题思路与代码示例,帮助读者构建完整的数据类型知识体系。
首先创建一个空项目


配置环境






Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
abstract, boolean, break, **class, public, static, void, if, else, return**等。goto 和 const。它们在 Java 中虽然目前没有具体功能,但被占位了,因此也不能拿来做标识符。class)。Man 和 man 是两个不同的标识符。age, $salary, _value, __1_value123abc (数字开头), -salary (减号非法), #abc (#号非法)这部分虽然不影响代码报错,但决定了代码是否'规范'和'专业':
HelloWorld, UserController。studentName, getUserAge()。MAX_VALUE。age)。nianLing,这确实很 Low)或中文,也不要使用无意义的字母(如 a, b)。本节结合前文内容,再次强调 Java 作为强类型语言的核心要求,为数据类型讲解铺垫逻辑基础:
本文将 Java 数据类型清晰划分为'基本数据类型'和'引用数据类型',并逐一拆解细节,重点围绕基本数据类型展开深度讲解:
作为本节核心,本文对每种基本数据类型的'类型名称、关键字、占用内存、取值范围、典型用途'进行了详细说明,部分类型搭配代码示例演示:
| 类型分类 | 具体类型 | 关键字 | 占用内存 | 取值范围 | 典型用途 |
|---|---|---|---|---|---|
| 整数类型 | 字节型 | byte | 1 字节 | -128 ~ 127 | 存储小范围整数(如文件字节数据、状态标记) |
| 短整型 | short | 2 字节 | -32768 ~ 32767 | 存储中等范围整数(如简单计数、年龄) | |
| 整型 | int | 4 字节 | -2³¹ ~ 2³¹-1 | 最常用,存储普通整数(如商品数量、ID) | |
| 长整型 | long | 8 字节 | -2⁶³ ~ 2⁶³-1 | 存储大范围整数(如时间戳、身份证号),定义时需在数值后加'L'(如long num = 100000L) | |
| 浮点类型(小数) | 单精度浮点型 | float | 4 字节 | 约 ±3.4×10³⁸(精度较低,保留 6-7 位有效数字) | 存储无需高精度的小数(如简单测量数据),定义时需在数值后加'F'(如float pi = 3.14F) |
| 双精度浮点型 | double | 8 字节 | 约 ±1.8×10³⁰⁸(精度较高,保留 15-16 位有效数字) | 最常用,存储高精度小数(如金额、圆周率),默认小数类型(如double price = 99.9) | |
| 字符类型 | 字符型 | char | 2 字节 | 0 ~ 65535(对应 Unicode 编码) | 存储单个字符(如字母、数字、符号),定义时用单引号包裹(如char c = 'A',支持中文char c = '中') |
| 布尔类型 | 布尔型 | boolean | 1 字节(或 1 位,视 JVM 而定) | true(真)/false(假) | 存储逻辑判断结果(如条件判断、开关状态),仅能取这两个值(无'0 代表 false、1 代表 true'的用法) |
此处仅做基础概念铺垫,避免信息过载:
本文通过'知识点 + 反例'的形式,强调易出错的细节,帮助学习者规避误区:
int类型,若数值超出int范围(如10000000000),必须显式声明为long(加'L'),否则会报错;float和double均为'近似值',不能用于要求绝对精确的场景(如银行金额),此类场景需使用BigDecimal类(后续课程讲解),并举例:0.1 + 0.2的结果并非0.3,而是约0.30000000000000004;char类型基于 Unicode 编码,可存储中文(因 Unicode 包含中文编码),但不能存储多个字符(如char c = "AB"会报错,需用双引号的字符串类型);boolean类型仅能表示true/false,不能与整数相互转换(如boolean flag = 1是错误写法,区别于 C/C++)。文中穿插简单代码案例,帮助学习者直观理解数据类型的定义与使用:
// 1. 整数类型示例
byte b = 100; // 正确,100 在 byte 取值范围内
short s = 2000; // 正确
int i = 100000; // 正确(常用)
long l = 10000000000L; // 正确,加 L 声明为 long
// 2. 浮点类型示例
float f = 3.14F; // 正确,加 F 声明为 float
double d = 3.1415926; // 正确(常用,默认 double)
// 3. 字符类型示例
char c1 = 'A'; // 正确,单个字母
char c2 = '中'; // 正确,单个中文
char c3 = 65; // 正确,65 是'A'的 Unicode 编码
// 4. 布尔类型示例
boolean flag = true; // 正确
if (flag) {
System.out.println("条件成立");
}
int、double的默认属性和long、float的显式声明规则;int,'学生身高'用double,'性别标记'用char或boolean),培养'数据类型匹配'的思维。本文围绕'整数、浮点、字符、布尔'四大基本数据类型,从'进制表示、编码逻辑、类型特性'三个维度展开扩展讲解,每个模块均结合'概念 + 示例',避免抽象化理解:
Java 中整数支持多进制定义,这是面试中基础且高频的考点,本文重点讲解以下 4 种进制及其语法规则:
| 进制类型 | 语法标识 | 示例 | 说明 |
|---|---|---|---|
| 十进制 | 无标识(默认) | int a = 10; | 日常使用的 0-9 数字组合,无需额外标记 |
| 二进制 | 以0b开头(注意是小写 b) | int b = 0b10; | 仅包含 0 和 1,0b10对应十进制的 2 |
| 八进制 | 以0开头(数字 0) | int c = 010; | 包含 0-7 数字,010对应十进制的 8(易因多写 0 出错,需重点注意) |
| 十六进制 | 以0x开头(0 + 小写 x) | int d = 0x10; | 包含 0-9、A-F(大小写均可),0x10对应十进制的 16(如0x000A对应十进制 10) |
关键提醒:本文通过代码运行演示(如System.out.println(010);输出结果为 8),强调'八进制以 0 开头'的易错点,避免学习者因语法疏忽导致逻辑错误。
上一节已提及浮点类型的'近似值'特性,本节进一步深入解析精度问题的本质,并结合面试场景说明使用限制:
float和double处理'要求绝对精确'的场景(如银行金额、财务计算),需使用 Java 提供的java.math.BigDecimal类(后续课程会详解该类的使用)。精度问题的底层原因:本文用通俗语言解释:float和double基于'二进制浮点数'存储,无法精确表示所有十进制小数(如 0.1),只能存储近似值。举例验证:
float f1 = 0.1f;
double d1 = 0.1;
System.out.println(f1 == d1); // 输出 false(0.1f 和 0.1 的近似值不同)
float f2 = 233333333f;
float f3 = f2 + 1;
System.out.println(f2 == f3); // 输出 true(超出 float 精度范围,加 1 后值无变化)
字符类型的扩展围绕'Unicode 编码'和'字符→数字的隐式转换'展开,这是理解 Java 字符处理的关键:
char类型本质是'Unicode 编码对应的数字'(占 2 字节,取值 0-65535),因此有两种定义方式:
char c1 = 'A';('A' 对应 Unicode 编码 65)char c2 = 65;(输出时会自动转换为 'A')同时演示'中文支持':char c3 = '中';('中' 对应 Unicode 编码 45217),解释 Java 对中文的友好性源于 Unicode 编码的全面性。字符的隐式转换:当字符与整数运算时,char会自动转换为对应的 Unicode 数字,举例:
char c4 = 'A';
int num = c4 + 1; // 'A'(65)+1=66
System.out.println(num); // 输出 66
System.out.println((char)num); // 强制转换回字符,输出'B'
本文强调:这是 Java 的'自动类型提升'特性,后续'类型转换'章节会进一步展开。
布尔类型扩展聚焦'语法简化'和'面试误区',内容简洁但实用:
boolean仅表示'真 / 假',无'0 代表 false、1 代表 true'的用法(区别于 C/C++),boolean flag = 1;是错误语法,会直接编译报错。语法简化建议:对于布尔类型的条件判断,无需写冗余的'==true'或'==false',举例:
boolean flag = true;
// 冗余写法:if (flag == true)
if (flag) { // 简化写法,逻辑完全一致,推荐使用
System.out.println("条件成立");
}
本文的核心价值之一是'结合面试场景',将扩展知识点转化为'可落地的面试答案',以下是重点讲解的 3 道面试题及解析逻辑:
float f = 0.1f; double d = 0.1; System.out.println(f == d);输出 false?解析思路:
float和double是二进制浮点数,无法精确表示 0.1 这样的十进制小数,只能存储近似值;float是 4 字节(6-7 位有效数字),double是 8 字节(15-16 位有效数字),0.1 的float近似值和double近似值存在微小差异;==比较(比较数值本身)时结果为 false。答题关键:必须提到'二进制浮点数的精度限制',而非仅说'类型不同'。char类型能否存储一个中文汉字?为什么?解析思路:
char类型基于 Unicode 编码,Unicode 编码集包含了几乎所有国家的文字(包括中文),每个char占 2 字节,而一个中文汉字的 Unicode 编码恰好能被 2 字节存储;char c = '中';是合法语法,编译运行无异常。答题关键:必须关联'Unicode 编码'和'char 的 2 字节存储',避免仅回答'能'而不解释原因。解析思路:
0b开头(如0b10);0开头(如010);0x开头(如0x10);010实际是十进制的 8,而非 10,开发中需注意避免多写 0。答题关键:清晰区分'标识符号',并提及八进制的易错点,体现细节掌握程度。
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online