Java 基础(使用IDEA)

Java基础01:注释

  • 书写注释是一个非常好的习惯
  • 平时写代码一定要规范
  • 注释不会被执行,是给我们写代码的人看的
  • Java中的注释有三种
    • 单行注释
    • 多行注释
    • 文档注释

首先创建一个空项目

配置环境

单行注释

多行注释

文档注释

注释的颜色修改

Java基础02:标识符和关键字

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

1. 关键字 (Keywords)
  • 定义:Java语言中被赋予了特殊含义、用做专门用途的字符串(单词)。
  • 列表:包括 abstract, boolean, break, class, public, static, void, if, else, return等。
  • 特点
    • Java中所有关键字都是小写的。String?System?
    • 在开发工具(IDE)中通常会高亮显示。
  • 补充知识(便于理解)
    • 保留字 (Reserved Words)gotoconst。它们在Java中虽然目前没有具体功能,但被占位了,因此也不能拿来做标识符。
2. 标识符 (Identifiers)
  • 定义:Java中所有的组成部分都需要名字。类名、变量名、方法名都被称为标识符。
  • 硬性规则 (语法层面必须遵守)
    1. 开头限制:只能以 字母 (A-Z/a-z)美元符 ($)、或 下划线 (_) 开头。绝对不能以数字开头
    2. 字符组合:首字符之后,可以是 字母、美元符、下划线 或 数字 的任意组合。
    3. 避开禁区:不能使用 关键字 作为标识符(例如不能给变量起名叫 class)。
    4. 大小写敏感:Java是强区分大小写的,Manman 是两个不同的标识符。
  • 示例
    • 合法age, $salary, _value, __1_value
    • 非法123abc (数字开头), -salary (减号非法), #abc (#号非法)
3. 行业规范与建议 (补充内容)

这部分虽然不影响代码报错,但决定了代码是否“规范”和“专业”:

  • 命名约定 (驼峰命名法 CamelCase)
    • 类名 (Class):使用 大驼峰 (UpperCamelCase),每个单词首字母大写。例如:HelloWorld, UserController
    • 变量名/方法名:使用 小驼峰 (lowerCamelCase),第一个单词首字母小写,后面单词首字母大写。例如:studentName, getUserAge()
    • 常量:全部大写,单词间用下划线隔开。例如:MAX_VALUE
  • 见名知意
    • 推荐使用有意义的英文单词(如 age)。
    • 强烈不建议使用拼音(如 nianLing,这确实很Low)或中文,也不要使用无意义的字母(如 a, b)。

Java基础03:数据类型

二、核心知识点讲解

(一)强类型语言特性回顾(数据类型的前提)

视频开篇结合前文内容,再次强调 Java 作为强类型语言的核心要求,为数据类型讲解铺垫逻辑基础:

  • 变量使用必须 “先定义、后使用”,且定义时需明确指定数据类型,一旦类型确定,后续赋值 / 运算需符合该类型规则(如 int 类型变量不能直接赋值字符串);
  • 数据类型决定了变量占用内存的大小、存储格式及可进行的运算(如整数类型可做加减乘除,布尔类型仅能表示 true/false)。

(二)Java 数据类型分类(两大体系)

视频将 Java 数据类型清晰划分为 “基本数据类型” 和 “引用数据类型”,并逐一拆解细节,重点围绕基本数据类型展开深度讲解:

1. 基本数据类型(8 种,直接存储数据值)

作为本节核心,视频对每种基本数据类型的 “类型名称、关键字、占用内存、取值范围、典型用途” 进行了详细说明,部分类型搭配代码示例演示:

类型分类具体类型关键字占用内存取值范围典型用途
整数类型字节型byte1 字节-128 ~ 127存储小范围整数(如文件字节数据、状态标记)
短整型short2 字节-32768 ~ 32767存储中等范围整数(如简单计数、年龄)
整型int4 字节-2³¹ ~ 2³¹-1最常用,存储普通整数(如商品数量、ID)
长整型long8 字节-2⁶³ ~ 2⁶³-1存储大范围整数(如时间戳、身份证号),定义时需在数值后加 “L”(如long num = 100000L
浮点类型(小数)单精度浮点型float4 字节约 ±3.4×10³⁸(精度较低,保留 6-7 位有效数字)存储无需高精度的小数(如简单测量数据),定义时需在数值后加 “F”(如float pi = 3.14F
双精度浮点型double8 字节约 ±1.8×10³⁰⁸(精度较高,保留 15-16 位有效数字)最常用,存储高精度小数(如金额、圆周率),默认小数类型(如double price = 99.9
字符类型字符型char2 字节0 ~ 65535(对应 Unicode 编码)存储单个字符(如字母、数字、符号),定义时用单引号包裹(如char c = 'A',支持中文char c = '中'
布尔类型布尔型boolean1 字节(或 1 位,视 JVM 而定)true(真)/false(假)存储逻辑判断结果(如条件判断、开关状态),仅能取这两个值(无 “0 代表 false、1 代表 true” 的用法)
2. 引用数据类型(间接存储数据地址)

视频仅做基础概念铺垫,未展开深度讲解,避免信息过载:

  • 包含:类(class)、接口(interface)、数组([]);
  • 特点:变量存储的是数据在内存中的 “地址”,而非数据本身(后续课程会详细讲解)。

(三)关键注意事项与常见误区

视频通过 “知识点 + 反例” 的形式,强调易出错的细节,帮助学习者规避误区:

  1. 整数类型的默认值:Java 中整数直接量默认是int类型,若数值超出int范围(如10000000000),必须显式声明为long(加 “L”),否则会报错;
  2. 浮点类型的精度问题:提醒floatdouble均为 “近似值”,不能用于要求绝对精确的场景(如银行金额),此类场景需使用BigDecimal类(后续课程讲解),并举例:0.1 + 0.2的结果并非0.3,而是约0.30000000000000004
  3. 字符类型的编码逻辑:说明char类型基于 Unicode 编码,可存储中文(因 Unicode 包含中文编码),但不能存储多个字符(如char c = "AB"会报错,需用双引号的字符串类型);
  4. 布尔类型的使用限制boolean类型仅能表示true/false,不能与整数相互转换(如boolean flag = 1是错误写法,区别于 C/C++)。

(四)代码示例演示

视频中穿插简单代码案例,帮助学习者直观理解数据类型的定义与使用:

java

// 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("条件成立"); } 

三、课程学习建议

  1. 动手实践:建议学习者对照视频代码,亲自在 IDE(如 IDEA、Eclipse)中编写并运行,观察变量定义是否报错、数值超出范围时的提示,加深对 “强类型规则” 的理解;
  2. 记忆重点:重点记忆 8 种基本数据类型的 “关键字、占用内存、取值范围”,尤其是intdouble的默认属性和longfloat的显式声明规则;
  3. 提前思考:尝试用所学数据类型定义生活中的数据(如 “学生年龄” 用int,“学生身高” 用double,“性别标记” 用charboolean),培养 “数据类型匹配” 的思维。

Java基础04:数据类型扩展及面试题讲解

二、核心知识点:数据类型扩展

视频围绕 “整数、浮点、字符、布尔” 四大基本数据类型,从 “进制表示、编码逻辑、类型特性” 三个维度展开扩展讲解,每个模块均结合 “概念 + 示例”,避免抽象化理解:

(一)整数类型扩展:进制表示与转换

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 开头” 的易错点,避免学习者因语法疏忽导致逻辑错误。

(二)浮点类型扩展:精度问题与场景限制

上一节已提及浮点类型的 “近似值” 特性,本节进一步深入解析精度问题的本质,并结合面试场景说明使用限制:

  1. 面试核心结论:严禁使用floatdouble处理 “要求绝对精确” 的场景(如银行金额、财务计算),需使用 Java 提供的java.math.BigDecimal类(后续课程会详解该类的使用)。

精度问题的底层原因:视频用通俗语言解释:floatdouble基于 “二进制浮点数” 存储,无法精确表示所有十进制小数(如 0.1),只能存储近似值。举例验证:java

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 字符处理的关键:

  1. Unicode 编码的应用:视频明确char类型本质是 “Unicode 编码对应的数字”(占 2 字节,取值 0-65535),因此有两种定义方式:
    • 直接写字符:char c1 = 'A';('A' 对应 Unicode 编码 65)
    • 直接写编码值:char c2 = 65;(输出时会自动转换为 'A')同时演示 “中文支持”:char c3 = '中';(' 中 ' 对应 Unicode 编码 45217),解释 Java 对中文的友好性源于 Unicode 编码的全面性。

字符的隐式转换:当字符与整数运算时,char会自动转换为对应的 Unicode 数字,举例:java

char c4 = 'A'; int num = c4 + 1; // 'A'(65)+1=66 System.out.println(num); // 输出66 System.out.println((char)num); // 强制转换回字符,输出'B' 

视频强调:这是 Java 的 “自动类型提升” 特性,后续 “类型转换” 章节会进一步展开。

(四)布尔类型扩展:简化语法与逻辑意义

布尔类型扩展聚焦 “语法简化” 和 “面试误区”,内容简洁但实用:

  1. 面试常见误区:明确 “布尔类型不能与整数转换”——Java 中boolean仅表示 “真 / 假”,无 “0 代表 false、1 代表 true” 的用法(区别于 C/C++),boolean flag = 1;是错误语法,会直接编译报错。

语法简化建议:对于布尔类型的条件判断,无需写冗余的 “==true” 或 “==false”,举例:java

boolean flag = true; // 冗余写法:if (flag == true) if (flag) { // 简化写法,逻辑完全一致,推荐使用 System.out.println("条件成立"); } 

三、高频面试题拆解与作答思路

视频的核心价值之一是 “结合面试场景”,将扩展知识点转化为 “可落地的面试答案”,以下是重点讲解的 3 道面试题及解析逻辑:

面试题 1:解释为什么float f = 0.1f; double d = 0.1; System.out.println(f == d);输出 false?

视频解析思路

  1. 先点明 “浮点类型的存储本质”:floatdouble是二进制浮点数,无法精确表示 0.1 这样的十进制小数,只能存储近似值;
  2. 再对比精度差异:float是 4 字节(6-7 位有效数字),double是 8 字节(15-16 位有效数字),0.1 的float近似值和double近似值存在微小差异;
  3. 最后总结:两者存储的 “近似值不同”,因此==比较(比较数值本身)时结果为 false。答题关键:必须提到 “二进制浮点数的精度限制”,而非仅说 “类型不同”。

面试题 2:char类型能否存储一个中文汉字?为什么?

视频解析思路

  1. 先给出明确结论:能;
  2. 再解释底层原因:Java 中char类型基于 Unicode 编码,Unicode 编码集包含了几乎所有国家的文字(包括中文),每个char占 2 字节,而一个中文汉字的 Unicode 编码恰好能被 2 字节存储;
  3. 举例验证:char c = '中';是合法语法,编译运行无异常。答题关键:必须关联 “Unicode 编码” 和 “char 的 2 字节存储”,避免仅回答 “能” 而不解释原因。

面试题 3:Java 中整数的进制表示有哪些?如何区分?

视频解析思路

  1. 先列举 4 种进制:十进制、二进制、八进制、十六进制;
  2. 再逐一说明 “语法标识”(核心区分点):
    • 十进制:无标识(如 10);
    • 二进制:0b开头(如0b10);
    • 八进制:0开头(如010);
    • 十六进制:0x开头(如0x10);
  3. 最后提醒易错点:八进制的 “0 开头” 容易被忽略,比如010实际是十进制的 8,而非 10,开发中需注意避免多写 0。答题关键:清晰区分 “标识符号”,并提及八进制的易错点,体现细节掌握程度。

四、课程学习建议

  1. 动手验证所有示例:建议在 IDE 中逐行编写视频中的代码(如进制转换、浮点比较),观察运行结果,通过 “实践” 加深对 “精度问题、编码逻辑” 的理解,避免 “死记硬背”;
  2. 整理面试题答题模板:将视频中的 3 道面试题按 “结论→原因→示例” 的结构整理成笔记,形成答题框架(如回答浮点问题必提 “二进制精度”),为后续面试储备素材;
  3. 关联前后知识点:回顾上一节 “基本数据类型定义”,将 “扩展内容”(如进制、编码)与 “基础定义”(如 char 占 2 字节)串联,形成完整的 “数据类型知识体系”,避免知识点碎片化。

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk