当前位置: 首页 > article >正文

Java核心知识点的系统整理(一)

目录

一、数据类型与运算符秘籍

1. 四类八种数据类型

2. 自增运算符的暗战

3. 位运算与逻辑运算对决

二、流程控制三剑客

1. 分支结构抉择

2. 循环控制四骑士

三、面向对象核心机制

1. final的三重封印

2. 静态成员生存法则

四、进阶特性解密

1. 多态的三重境界

2. 重载 vs 重写

五、递归与循环的抉择

适用场景对照表

六、企业级开发技巧

七、高频面试题精解


一、数据类型与运算符秘籍

1. 四类八种数据类型
整数家族(4兄弟): byte(1B)、short(2B)、int(4B)、long(8B)  // 企业Tip:财务系统慎用浮点数
小数家族(2姐妹): float(4B)、double(8B)                   // 推荐BigDecimal处理精确计算
字符特工: char(2B) Unicode编码
布尔守卫: boolean(1bit)                                   // 禁止使用0/1替代
2. 自增运算符的暗战
int i = 5;
System.out.println(++i); // 输出6(先加后用)
System.out.println(i++); // 输出6(先用后加)// 企业级技巧:避免在复杂表达式中混用,防止时序问题
3. 位运算与逻辑运算对决
类型运算符特点典型场景
位运算&按位与掩码操作
位运算|按位或标志位组合
逻辑运算&&短路与条件判断
逻辑运算||短路或条件优化
// 二进制转换黑科技(调试利器)
int num = 30;
System.out.println(Integer.toBinaryString(num)); // 11110

二、流程控制三剑客

1. 分支结构抉择
// 平行双if(可能同时执行)
if(condition1) {...}
if(condition2) {...}// if-else(二选一)
if(condition) {...} 
else {...}// 多分支(阶梯判断)
if(cond1) {...}
else if(cond2) {...}
else {...}
2. 循环控制四骑士
关键字作用域企业应用场景
break跳出当前循环搜索命中后终止
continue跳过本次循环过滤无效数据
return结束方法执行参数校验失败时提前返回
System.exit(0)关闭JVM仅限紧急停机(慎用!)
// 实战示例:安全扫描中的break使用
for(File file : directory){if(file.containsVirus()){triggerAlarm();break; // 发现病毒立即终止扫描}
}

三、面向对象核心机制

1. final的三重封印
  • 类封印final class 禁止继承(如String类)

  • 方法封印final method 禁止重写(模板方法模式)

  • 变量封印:引用不变,内容可变(集合类典型应用)

final List<String> names = new ArrayList<>();
names.add("张三"); // 合法操作
names = new ArrayList<>(); // 编译错误!
2. 静态成员生存法则
特性静态成员实例成员
内存位置方法区堆内存
加载时机类加载时对象创建时
访问方式类名访问实例访问
共享性全局共享对象独享

企业实践:静态工具类应私有化构造器,防止误实例化


四、进阶特性解密

1. 多态的三重境界
interface Animal { void speak(); }class Cat implements Animal {public void speak() { System.out.println("喵~"); }
}// 运行时多态
Animal a = new Cat();
a.speak(); // 输出"喵~"
 
2. 重载 vs 重写
维度重载(Overload)重写(Override)
发生位置同一类中继承体系
参数列表必须不同必须相同
返回类型可不同需兼容
访问权限无限制不能更严格
// 企业级重载实践:参数明确化
public void connect(String url) {...}
public void connect(String host, int port) {...}

五、递归与循环的抉择

适用场景对照表
方案优点缺点典型场景
递归代码简洁栈溢出风险树形结构遍历
循环内存安全代码稍复杂大数据量处理

性能口诀:万级数据用循环,树状结构可递归


六、企业级开发技巧

  1. 防御式编程:所有equals比较前先进行null检查

  2. 代码安全:避免在循环内创建大对象

  3. 性能优化:字符串拼接使用StringBuilder

  4. 团队规范:复杂逻辑必须添加流程图注释

  5. 调试技巧:使用IDEA的Evaluate表达式实时验证

// 安全equals写法示例
public static boolean safeEquals(String a, String b) {return a != null && a.equals(b);
}

七、高频面试题精解

Q:如何防止递归导致栈溢出?
A:三板斧策略

  1. 严格设置递归终止条件

  2. 限制递归深度(设置计数器)

  3. 尾递归优化(Java暂不支持,可改为循环)

// 尾递归改循环示例
public static int factorial(int n) {int result = 1;while(n > 1) {result *= n;n--;}return result;
}

相关文章:

Java核心知识点的系统整理(一)

目录 一、数据类型与运算符秘籍 1. 四类八种数据类型 2. 自增运算符的暗战 3. 位运算与逻辑运算对决 二、流程控制三剑客 1. 分支结构抉择 2. 循环控制四骑士 三、面向对象核心机制 1. final的三重封印 2. 静态成员生存法则 四、进阶特性解密 1. 多态的三重境界 2…...

在Android Studio中,`Settings`里的Gradle路径、环境变量以及`gradle - wrapper.properties`文件关联

在Android Studio中,Settings里的Gradle路径、环境变量以及gradle - wrapper.properties文件关联 Android Studio中Settings里的Gradle路径 在Android Studio的Settings(Preferences ) -> Build, Execution, Deployment -> Build Tools -> Gradle 中: Use defau…...

算法复习(二分+离散化+快速排序+归并排序+树状数组)

一、二分算法 二分算法&#xff0c;堪称算法世界中的高效查找利器&#xff0c;其核心思想在于利用数据的有序性&#xff0c;通过不断将查找区间减半&#xff0c;快速定位目标元素或满足特定条件的位置。 1. 普通二分 普通二分适用于在有序数组中查找特定元素的位置。我们可以…...

VSCode写java时常用的快捷键

首先得先安好java插件 1、获取返回值 这里是和idea一样的快捷键的&#xff0c;都是xxxx.var 比如现在我new一个对象 就输入 new MbDo().var // 点击回车即可变成下面的// MbDo mbDo new MbDo()//以此类推get方法也可获取 mbDo.getMc().var // 点击回车即可变成下面的 // St…...

【Code】《代码整洁之道》笔记-Chapter16-重构SerialDate

第16章 重构SerialDate 如果你找到JCommon类库&#xff0c;深入该类库&#xff0c;其中有个名为org.jfree.date的程序包。在该程序包中&#xff0c;有个名为SerialDate的类&#xff0c;我们即将剖析这个类。 SerialDate的作者是David Gilbert。David显然是一位经验丰富、能力…...

使用 Node.js、Express 和 React 构建强大的 API

了解如何使用 Node.js、Express 和 React 创建一个强大且动态的 API。这个综合指南将引导你从设置开发环境开始&#xff0c;到集成 React 前端&#xff0c;并利用 APIPost 进行高效的 API 测试。无论你是初学者还是经验丰富的开发者&#xff0c;这篇文章都适合你。 今天&#…...

深度学习入门:神经网络的学习

目录 1 从数据中学习1.1 数据驱动1.2 训练数据和测试数据 2损失函数2.1 均方误差2.2 交叉熵误差2.3 mini-batch学习2.4 mini-batch版交叉熵误差的实现2.5 为何要设定损失函数 3 数值微分3.1 数值微分3.3 偏导数 4 梯度4.1 梯度法4.2 神经网络的梯度 5 学习算法的实现5.1 2层神经…...

OSI参考模型和TCP/IP模型

1.OSI参考模型 OSI模型&#xff1a; OSI参考模型有7层&#xff0c;自下而上依次为物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;会话层&#xff0c;表示层&#xff0c;应用层。&#xff08;记忆口诀&#xff1a;物联网叔会用&#xff09;。低…...

人工智能中的卷积神经网络(CNN)综述

文章目录 前言 1. CNN的基本原理 1.1 卷积层 1.2 池化层 1.3 全连接层 2. CNN的发展历程 2.1 LeNet-5 2.2 AlexNet 2.3 VGGNet 2.4 ResNet 3. CNN的主要应用 3.1 图像分类 3.2 目标检测 3.3 语义分割 3.4 自然语言处理 4. 未来研究方向 4.1 模型压缩与加速 4.2 自监督学习 4.3 …...

WordPress - 此站点出现严重错误

本篇讲 当WordPress出现 此站点出现严重错误 时&#xff0c;该如何解决。 目录 1&#xff0c;现象 2&#xff0c; FAQ 3&#xff0c;管理Menu无法打开 下面是详细内容。 1&#xff0c;现象 此站点出现严重错误&#xff08;このサイトで重大なエラーが発生しました&#x…...

力扣每日打卡 1534. 统计好三元组 (简单)

力扣 1534. 统计好三元组 简单 前言一、题目内容二、解题方法1. 暴力解法2.官方题解2.1 方法一&#xff1a;枚举2.2 方法二&#xff1a;枚举优化 前言 这是刷算法题的第十二天&#xff0c;用到的语言是JS 题目&#xff1a;力扣 1534. 统计好三元组 (简单) 一、题目内容 给你一…...

《Vue3学习手记2》

今天主要学习Vue3中的数据监视&#xff1a; ps: 代码中的注释写的很详细&#xff0c;这样更有利于理解 watch 作用: 监视数据的变化(和Vue2中watch作用一致) 特点: Vue3中的watch只能监视以下四种数据: ref创建定义的数据&#xff08;基本类型、对象类型&#xff09;reactiv…...

在pycharm中搭建yolo11分类检测系统1--PyQt5学习(一)

实验条件&#xff1a;pycharm24.3autodlyolov11环境PyQt5 如果pycharm还没有配PyQt5的话就先去看我原先写的这篇博文&#xff1a; PyQT5安装搭配QT DesignerPycharm&#xff09;-CSDN博客 跟练参考文章&#xff1a; 目标检测系列&#xff08;四&#xff09;利用pyqt5实现yo…...

【经验记录贴】使用配置文件提高项目的可维护性

mark一下。 整体修改前后如下&#xff1a; 课题&#xff1a; 在项目中有一个支持的文件类型的FILE_TYPE的定义&#xff0c; 这个是写死在主程序中&#xff0c;每次增加可以支持的文件类型的时候&#xff0c;都需要去修改主程序中这个FILGE_TYPE的定义。 主程序修改其实不太花时…...

从JSON到SQL:基于业务场景的SQL生成器实战

引言 在数据驱动的业务场景中&#xff0c;将业务需求快速转化为SQL查询是常见需求。本文将通过一个轻量级的sql_json_to_sql函数&#xff0c;展示如何将JSON格式的查询描述转换为标准SQL语句&#xff0c;并结合实际业务场景验证其功能。 核心代码解析 1. 代码实现 def sql_j…...

空格键会提交表单吗?HTML与JavaScript中的行为解析

在网页开发中&#xff0c;理解用户交互细节对于提供流畅的用户体验至关重要。一个常见的问题是&#xff1a;空格键是否会触发表单提交&#xff1f;本文将通过一个简单的示例解释这一行为&#xff0c;并探讨如何使用HTML和JavaScript来定制这种交互。 示例概览 考虑以下HTML代…...

06 - 多线程-JUC并发编程-原子类(二)

上一章&#xff0c;讲解java &#xff08;java.util.concurrent.atomic&#xff09; 包中的 支持基本数据类型的原子类&#xff0c;以及支持数组类型的原子类&#xff0c;这一章继续讲解支持对实体类的原子类&#xff0c;以及原子类型的修改器。 还有最后java &#xff08;java…...

vue3 实现谷歌登录

很多人都是直接在 index.html 文件中引入的&#xff0c;刚开始我也那样写但是谷歌的api只能调起一次后续就不会生效了 我的登录是个弹窗&#xff0c;写在app.vue 文件中 const isGoogleLoaded ref(true);onMounted(async () > {initialize(); }); // 初始化 const initi…...

SOME/IP中”客户端消费“及”服务端提供”的解析

先上结论 AREthAddConsumedEventGroup-->客户端的函数-->谁调用 Consumed函数&#xff0c;谁就是消费者 AREthAddProvidedEventGroup-->服务端的函数-->谁调用 Provided函数&#xff0c;谁就是服务端 Server 端&#xff1a;AREthAddProvidedEventGroup → 声明 &…...

GO语言入门:字符串处理1(打印与格式化输出)

13.1 打印文本 在 fmt 包中&#xff0c;Print 函数用于打印&#xff08;输出&#xff09;文本信息。依据输出目标的不同&#xff0c;Print 函数可以划分为三组&#xff0c;详见下表。 按应用目标分组函数说明将文本信息输出到标准输出流&#xff0c;一般是输出到屏幕上Print将…...

Linux 深入浅出信号量:从线程到进程的同步与互斥实战指南

知识点1【信号量概述】 信号量是广泛用于进程和线程间的同步和互斥。信号量的本质 是一个非负的整数计数器&#xff0c;它被用来控制对公共资源的访问 当信号量值大于0的时候&#xff0c;可以访问&#xff0c;否则将阻塞。 PV原语对信号量的操作&#xff0c;一次P操作使信号…...

Oracle数据库数据编程SQL<9.1 数据库逻辑备份和迁移exp和imp之导出、导入>

EXP (Export) 和 IMP (Import) 是 Oracle 提供的传统数据导出导入工具,用于数据库逻辑备份和迁移。尽管在较新版本中已被 Data Pump (EXPDP/IMPDP) 取代,但在某些场景下仍然有用。 目录 一、EXP 导出工具 1. 基本语法 2. 常用参数说明 3. 导出模式 3.1 表模式导出 3.2 用…...

DotnetCore开源库SampleAdmin源码编译

1.报错: System.Net.Sockets.SocketException HResult0x80004005 Message由于目标计算机积极拒绝&#xff0c;无法连接。 SourceSystem.Net.Sockets StackTrace: 在 System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, C…...

Kaggle-Disaster Tweets-(二分类+NLP+模型融合)

Disaster Tweets 题意&#xff1a; 就是给出一个dataframe包含text这一列代表着文本&#xff0c;文本会有一些词&#xff0c;问对于每条记录中的text是真关于灾难的还是假关于灾难的。 比如我们说今天作业真多&#xff0c;这真是一场灾难。实际上这个灾难只是我们调侃而言的。…...

搭建一个网站需要选择什么配置的服务器?

一般要考虑网站规模、技术需求等因素来进行选择。 小型网站&#xff1a;个人博客、小型企业官网等日均量在 1000 以内的网站&#xff0c;一般推荐2 核 CPU、4GB 内存、50GB 硬盘&#xff0c;带宽 1 - 5M。如果是纯文字内容且图片较少的小型网站&#xff0c;初始阶段 1 核 CPU、…...

idea如何使用git

在 IntelliJ IDEA 中使用 Git 的详细步骤如下&#xff0c;分为配置、基础操作和高级功能&#xff0c;适合新手快速上手&#xff1a; ​一、配置 Git​ ​安装 Git​ 下载并安装 Git&#xff0c;安装时勾选“Add to PATH”。验证安装&#xff1a;终端输入 git --version 显示版本…...

webpack vite

​ 1、webpack webpack打包工具&#xff08;重点在于配置和使用&#xff0c;原理并不高优。只在开发环境应用&#xff0c;不在线上环境运行&#xff09;&#xff0c;压缩整合代码&#xff0c;让网页加载更快。 前端代码为什么要进行构建和打包&#xff1f; 体积更好&#x…...

.Net 9 webapi使用Docker部署到Linux

参考文章连接&#xff1a; https://www.cnblogs.com/kong-ming/p/16278109.html .Net 6.0 WebApi 使用Docker部署到Linux系统CentOS 7 - 长白山 - 博客园 项目需要跨平台部署&#xff0c;所以就研究了一下菜鸟如何入门Net跨平台部署&#xff0c;演示使用的是Net 9 webAPi Li…...

PyTorch 根据官网命令行无法安装 GPU 版本 解决办法

最近遇到一个问题&#xff0c;PyTorch 官网给出了 GPU 版本的安装命令&#xff0c;但安装成功后查看版本&#xff0c;仍然是 torch 2.6.0cpu 1. 清理现有 PyTorch 安装 经过探索发现&#xff0c;需要同时卸载 conda 和 pip 安装的 torch。 conda remove pytorch torchvision …...

PHP防火墙代码,防火墙,网站防火墙,WAF防火墙,PHP防火墙大全

PHP防火墙代码,防火墙,网站防火墙,WAF防火墙,PHP防火墙大全 资源宝整理分享&#xff1a;https://www.htple.net PHP防火墙&#xff08;作者&#xff1a;悠悠楠杉&#xff09; 验证测试&#xff0c;链接后面加上?verify_cs1后可以自行测试 <?php //复制保存zzwaf.php$we…...