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

java基础总结笔记(2026.05.06)

javase注释/* * 多行注释 */ ​ //JavaDoc文档注释 ​ /* * Description Helloworld * Author thr */标识符关键字所有的标识符都应该以大写字母或者小写字母、美元符号、下划线开始的。首字符之后可以是大写字母或者小写字母、美元符号、下划线这些或者数字的任何字符组成。不能使用关键字作为变量名或方法名。标识符是大小写敏感的。不建议用中文去命名数据类型java是强类型语言所有变量都必须先定义后才能使用。弱类型语言VB、JSJava的数据类型分为两大类基本类型数值型byteshortintlong定义的数值后面要加L浮点类型float定义的数值后面要加Fdouble定义的数值后面要加D字符类型charboolean类型引用类型类接口数组十进制二进制八进制0开头十进制十六进制0X开头最好完全使用浮点数进行比较BigDecimal数学工具进行比较类型转换不同类型的数据先转化为同一类型然后再进行计算赋值从低到高的数据类型byte、short、int、long、float、double如果从低到高转换是强制转换可能造成内存溢出或者精度流失int i 128; byte b (byte)i;//强制转换但是最后byte得出的结果不是128因为byte类型最多到127造成了内存溢出的问题如果从高到低是自动转换int i 128; double b i;//b得128.0不能对布尔值进行转换不能把对象类型转换为不相干的类型int money 10_0000_0000;//JDK7新特性数字之间可以使用下划线进行分割 int years 20; long total money * years;//结果是不对的因为在计算money * years的时候数据已经溢出再复制给long类型也是错误的数据 long total1 money* ((long)years);//结果是正确的变量从属于对象如果不进行初始化这个类型的默认值 00.0布尔值默认为false除了基本类型其余的默认值都是null常量常量初始化后不能再改变不会变动的值常量名一般使用大写字符final double PI 3.14;//final 常量名 值;定义常量运算符command d 复制当前行到下一行double pow Math.pow(2,3);//输出2的3次方的值Math是一个工具类逻辑与运算两个都为真结果才为真||逻辑非运算两个变量有一个为真结果是真非运算如果是真结果为假如果是假结果为真boolean a true; boolean b false; System.out.println(ab);//false System.out.println(a||b);//true System.out.println!(ab);//trueint c 5; boolean d (c 4)(c4);//短路与 System.out.println(d);//falsec4是错误的所以后面的C没有执行 System.out.println(c);//所以c还是5位运算与、或、非、取反A 0011 1100 B 0000 1101 A B 0000 1100(A与B都为1时才为1否则是0) A | B 0011 1101A或B为1时结果为1否则是0 A ^ B 0011 0001A与B相同时则为0不同时为1 ~B 1111 0010当B为1时等于0当B为0时为1取反左移,右移System.out.print(23);//输出162在二进制里面是0000 0010当左移三位的时候是0001 0000对应16条件运算符-int a 10; int b 20; a b;//a a b System.out.println(a);//得出a等于30. a - b;//a a - b System.out.println(a);//得出a 等于10。字符串链接符int a 10; int b 20; System.out.println( a b);//输出1020因为前面有个字符串的类型 System.out.println(a b );//输出30因为先运算ab后再加字符串就还是30.三元运算符x ? y : z;//如果x为真则结果为y否则结果为z int score 50; String type score 60 ? 不及格 : 及格; System.out.println(type);//不及格用户交互Scanner我们可以通过Scanner类来获取用户的输入。基本语法Scanner s new Scanner(System.in);import java.util.Scanner;//需要调用Scanner包 ​ public class Scannertest { public static void main(String[] args) { Scanner scanner new Scanner(System.in);//创建一个扫描器对象用于接收键盘数据 ​ System.out.println(使用next方式接收); ​ //判断用户有没有输入字符串 if(scanner.hasNext()){ String str scanner.next(); System.out.println(输出的内容为 str); } //凡是属于IO流(输入、输出流)的类如果不关闭会一直占用资源 scanner.close(); } }next与nextLine接收的区别next():一定要读取到有效字符后才可以结束输入。对输入有效字符之前遇到的空白next方法会自动将其去掉。只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。next不能得到带有空格的字符串。nextLine():1.以Enter为结束符也就是说nextLine方法返回的是输入会车之前的所有字符。2.可以获得空白。在Scanner上按住command和左键可以调出Scanner的源码打开结构可以看到Scanner的结构。顺序结构JAVA的基本结构就是顺序结构除非特别指明否则就按照顺序一句一句执行。语句与语句之间框与框之间是按照从上到下的顺序进行的它是由若干个依次执行的处理步骤组成的他是任何一个算法都离不开的一种基本算法结构。选择结构if单选择结构语法if(布尔值表达式) { //如果布尔表达式为true将执行的语句 };拓展equals判断字符串是否相等,尽量不要使用判断字符串。if双选择结构语法if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式为false }if多选择结构语法if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 }else if(布尔表达式2){ //如果布尔表达式2的值为true执行代码 }else if(布尔表达式3){ //如果布尔表达式3的值为true执行代码 }else{ //如果以上布尔表达式都不为true执行代码 }if语句至多有一个else语句else语句在所有else if语句之后if语句可以有若干个else if语句他们必须在else语句之前。一旦其中一个else if语句检测为true其他的else if 以及 else语句都将跳过执行。嵌套的if结构使用嵌套的if...else语句是合法的也就是说可以在另一个if或者else if语句中使用if或者else if语句。语法if(布尔表达式1){ //如果布尔表达式1 的值为true执行代码 if(布尔表达式2){ //如果布尔表达式2的值为true执行代码 } }Switch选择结构switch case语句switch case语句判断一个变量与一系列值中某个值是否相等每个值称为一个分支。switch语句中的变量类型可以是byte、short、int、char、String同时case标签必须为字符串常量或自变量。语法switch(expression){ case value: //语句 break;//可选 //你可以有任意数量的case语句 case value: //语句 break;//可选 default://可选 //语句 }循环结构While循环结构while(布尔表达式){ //循环内容 }只要布尔表达式为true循环就会一直执行下去。我们大多数情况是会让循环停止下来的我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行比如服务器的请求响应监听等。循环条件一直为true就会造成无限循环【死循环】我们正常的业务编程中应该尽量避免死循环。会影响程序性能或造成程序卡死。do...while循环对于while语句而言如果不满足条件则不能进入循环。但有时候我们需要即使不满足条件也至少执行一次。do...while循环和while循环相似不同的是do...while循环至少会执行一次。语法do { //代码语句 }while{布尔表达式};While 和do...while的区别while先判断后执行do..while是先执行后判断。do...while总是保证循环体会被至少执行一次这是他们主要的区别。代码演示//使用do...while int i 0; int sum 0; do{ sum sum i; i; }while(i100); System.out.println(sum);//5050从1加到100//演示while与do...while的区别 int a 0; while(a0){ System.out.println(a);//没有输出 a; } System.out.println(); do{ System.out.println(a);//输出0 a; } while(a0);for循环很重要虽然所有循环结构都可以用while或者do...while表示但java提供了另一种语言for循环使一些循环结构变得更简单。for循环语句是支持迭代的一种通用结构是最有效的最灵活的循环结构。for循环执行的次数是在执行钱就确定的语法for(初始化;布尔表达式;更新迭代){ //代码语句 }代码演示for(int i 1;i 100;i){//初始化值条件判断迭代 System.out.println(i); } System.out.println(for循环结束);快捷键比如100.for会自动生成for的循环语句注意事项最先执行初始化步骤可以声明一种类型但可初始化一个或多个循环控制变量也可以是空语句。然后检测布尔表达式的值。如果为true循环体执行。如果为false循环终止开始执行循环体后面的语句。再次检测布尔表达式循环执行上面的过程。死循环for(;;) {};练习题//练习1:计算0到100之间的奇数和偶数的和 int oddSum 0; int evenSum 0; for(int i 0;i 100;i) { if(i%2 0 ){ oddSumi; }else { evenSumi; } } System.out.println(oddSum);//奇数和 System.out.println(evenSum);//偶数和//练习2:用for循环输出1到1000能被5整除的数并且每三个为一行。 for (int i 1; i 1000; i) { if(i % 5 0){ System.out.print(i\t); } if(i %(5 * 3) 0) { System.out.println(); } }//练习3:打印99乘法表 for(int i 1;i9;i) { for(int j 1;ji;j){ System.out.print(j * i i*j \t); } System.out.println(); }增强for循环在数组重点使用。增强for循环的语法for(声明语句;表达式) { //声明语句声明新的局部变量该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块其值与此时数组元素的值相等。 //代码 }代码样式int[] numbers {10,20,30,40,50};//定义了一个数组 for(int i 0 ;i 5;i) { System.out.println(numbers[i]); } //遍历数组的元素 for (int x:numbers) { System.out.println(x); }break和continuebreak在任何循环语句的主体部分均可用break控制循环的流程。break用于强行退出循环不执行循环中剩余的语句。break语句也在switch语句中使用。continue语句在循环语句体中用于终止某次循环过程即跳过循环体中尚未执行的语句接着进行下一次是否执行循环的判定。break与continue的区别break退出整个循环continue退出某次循环过程。练习打印5行三角形for(int i 1;i5;i) { for(int j 5;ji;j--) { System.out.print( ); } for(int j 1;ji;j) { System.out.print(*); } for(int j 1;ji;j) { System.out.print(*); } System.out.println(); }什么是方法java方法是语句的集合他们在一起执行一个功能。方法是解决一类问题的步骤和有序组合方法包含于类或对象中方法在程序中被创建在其他地方被引用设计方法的原则方法的本意是功能块就是实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性就是一个方法只能完成1个功能这样有利于我们后期的扩展。例子//main方法 public static void main(String[] args) { int sum add(1,2); System.out.println(sum);//3 } public static int add(int a,int b) { return ab; }main方法里尽量整洁主要调用别的方法方法的定义和调用方法的定义java的方法类似于其他语言的函数是一段用来完成特定功能的代码片段一般情况下定义一个方法包含以下语法方法包含一个方法头和一个方法体。下面是一个方法的所有部分修饰符是可选的告诉编译器如何使用该方法。定义了该方法的访问类型。返回值类型方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作但没有返回值。在这种情况下returnValueType是关键字void。方法名是方法的实际名称。方法名和参数表共同构成方法签名。参数类型参数像一个占位符。当方法被调用时传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的方法可以不包含任何参数。形式参数在方法被调用时用于接收外界输入的数据。实参调用方法时实际传给方法的数据。方法体方法体包含具体的语句定义该方法的功能。格式修饰符 返回值类型 方法名(参数类型 参数名) { 方法体 return 返回值; }举例比大小//比大小 public static void main(String[] args) { int max max(10,19); System.out.println(max); } public static int max(int num1,int num2) { if(num1 num2) { return 0;//终止方法 } int result 0; if(num1 num2) { result num1; }else { result num2; } return result; }方法的调用调用方法对象名.方法名实参列表java支持两种调用方法的方式根据方法是否返回值来选择。当方法返回一个值的时候方法调用通常被当作一个值。例如int larger max(30,40);如果方法返回值是void方法调用一定是一条语句。System.out.println(Hello!);值传递(java是值传递)和引用传递经常在面试中问道方法的重载重载就是在一个类中有相同的函数名称但形参不同的参数。方法重载的规则方法名称必须相同参数列表必须不同个数不同、或类型不同、参数排列顺序不同等。方法的返回类型可以相同也可以不同。仅仅返回类型不同不足以成为方法的重载。实现理论方法名称相同时编译器会根据调用方法的参数个数、参数类型等去逐个匹配以选择对应的方法如果匹配失败则编译器会报错。命令行传参有时候希望运行一个程序的时候再传递给他消息。这就要靠传递命令行参数给main函数实现。public class Scannertest { public static void main(String[] args) { //args.length 数组长度 for(int i 0;i args.length;i) { System.out.println(args[ i ] args[i]); ​ } } }可变参数java支持传递同类型的可变参数给一个方法。在方法声明中在指定参数类型后面加一个省略号...。一个方法中只能置顶一个可变参数它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

相关文章:

java基础总结笔记(2026.05.06)

javase注释/** 多行注释*/ ​ //JavaDoc:文档注释 ​ /** Description Helloworld* Author thr*/标识符关键字所有的标识符都应该以大写字母或者小写字母、美元符号💲、下划线开始的。首字符之后可以是大写字母或者小写字母、美元符号💲、下划…...

IAPWS Python库:工业级热力学计算与工程分析的终极解决方案

IAPWS Python库:工业级热力学计算与工程分析的终极解决方案 【免费下载链接】iapws python libray for IAPWS standard calculation of water and steam properties 项目地址: https://gitcode.com/gh_mirrors/ia/iapws 你是否曾为复杂的热力学计算而头疼&am…...

零基础吃透 Java 面向对象:类、对象、this 与 static 实战

Java 面向对象基础:类与对象一、章节整体框架本章共六大核心模块,由浅入深构建面向对象知识体系:1. 面向对象概述2. 类的定义3. 对象的创建与使用4. 方法重载5. this 关键字6. static 关键字本章内容是后续封装、继承、多态的基础。二、面向对…...

Rust 错误处理实战:优雅应对异常情况

Rust 错误处理实战:优雅应对异常情况 错误处理的重要性 在编程中,错误处理是一个不可避免的部分。无论我们的代码写得多好,总会遇到各种异常情况,如文件不存在、网络连接失败、权限不足等。良好的错误处理可以使我们的程序更加健…...

软件评测师基础知识专项刷题:软件工程

前言软考软件评测师备考之路,基础刷题必不可少。本文围绕【软件工程】模块整理经典习题 核心考点梳理,系列内容长期连载更新,慢慢积累、逐个突破,轻松夯实应试功底。考点软件工程基本原理:用分阶段的生命周期计划严格…...

Python热力学计算革命:iapws如何解决工程中的水蒸气物性计算难题

Python热力学计算革命:iapws如何解决工程中的水蒸气物性计算难题 【免费下载链接】iapws python libray for IAPWS standard calculation of water and steam properties 项目地址: https://gitcode.com/gh_mirrors/ia/iapws 在能源工程、化工设计和环境模拟…...

别再只盯着CAN了!手把手教你用CAN FD收发器搞定汽车ECU的8Mbps高速通信

从传统CAN到CAN FD:硬件选型与高速通信实战指南 汽车电子控制系统正经历着从传统CAN总线向CAN FD的迭代升级。作为一名长期奋战在汽车电子研发一线的工程师,我深刻理解这种技术转型带来的挑战与机遇。记得去年参与某新能源车型的ECU开发时,团…...

LyricsX:让Mac音乐体验更完美的智能歌词同步神器 [特殊字符]

LyricsX:让Mac音乐体验更完美的智能歌词同步神器 🎵 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 你是一个文章写手,你负责为开源项目写专业易懂的文…...

Python:Netmiko实现网络设备巡检及配置备份

通过Python的第三方库Netmiko实现不同厂商网络设备的日常巡检及配置备份。一、设备列表文件:JSON 文件1、 我们先看一个示例(1)拓扑(2)脚本import time from netmiko import ConnectHandlerAR1 {"host": &q…...

基于Web Audio与Canvas实现浏览器端音视频动态合成

1. 项目概述与核心价值最近在折腾一些个人项目,想给静态页面加点“活”的交互,比如让用户上传一张图片,然后生成一个带点律动感的音乐视频。这听起来像是需要一整套复杂的音视频处理流水线,从音频分析到视觉生成,没个几…...

Python实现本地网络摄像头服务器:MJPEG流原理与Flask部署实战

1. 项目概述:从“玩具”到“利器”的本地网络摄像头如果你手头有一台闲置的旧手机、一个吃灰的USB摄像头,或者只是想用电脑自带的摄像头搭建一个简单的监控、直播或视频会议服务器,那么mehmetkahya0/local-web-camera这个项目绝对值得你花时间…...

3个维度解析Backtrader-PyQt可视化回测平台:从零到策略实战的完整指南

3个维度解析Backtrader-PyQt可视化回测平台:从零到策略实战的完整指南 【免费下载链接】backtrader-pyqt-ui 项目地址: https://gitcode.com/gh_mirrors/bac/backtrader-pyqt-ui 在量化交易的世界里,策略回测常常是开发者最头疼的环节——要么面…...

现代化终端模拟器开发:从原理到实践,构建智能开发环境

1. 项目概述:一个面向未来的终端模拟器在开发者的日常工作中,终端(Terminal)是连接我们与计算机系统核心的桥梁。无论是进行服务器运维、代码编译、版本控制还是日常的文件操作,一个高效、稳定且功能强大的终端模拟器&…...

Vanna 2.0企业级部署:基于LLM智能体的自然语言转SQL与权限控制实战

1. 项目概述:从自然语言到数据洞察的智能桥梁在数据驱动的时代,数据分析师和业务人员之间似乎总隔着一道无形的墙。业务人员用自然语言提问:“上个季度华东区的销售冠军是谁?”,而分析师则需要将其翻译成复杂的SQL查询…...

AI智能体编排平台d3vsh0p:从需求到代码的自动化软件开发实践

1. 项目概述:一个由AI驱动的自主软件开发平台 如果你和我一样,经历过无数次从零开始构建一个软件项目的繁琐过程——写需求文档、设计架构、编码、测试、调试,再到最后的部署和维护——你可能会想,有没有一种方式能让这个过程更自…...

别再怕单点故障了!用HCL模拟器手把手搭建M-LAG双活核心网络(附完整配置与排错)

别再怕单点故障了!用HCL模拟器手把手搭建M-LAG双活核心网络(附完整配置与排错) 当核心交换机突然宕机,整个办公区网络瘫痪的红色警报在监控屏上闪烁时,我正端着咖啡准备开始周一晨会。这种场景对任何网络管理员来说都是…...

FreeSWITCH与AI大模型融合:构建智能语音交互系统核心架构

1. 项目概述:当FreeSWITCH遇上AI语音交互最近在折腾一个挺有意思的玩意儿,把FreeSWITCH这个老牌的开源软交换平台,和当下火热的AI大语言模型(比如ChatGPT)给打通了。项目名字就叫laoyin/freeswitch_chatGPT&#xff0c…...

多平台内容分发系统架构设计与实现思路 行业通用技术方案解析

前言从后端开发与系统架构设计视角来看,当下很多技术团队、自媒体工作室、企业运营部门,都有搭建多平台内容矩阵分发系统的需求。无论是技术博文跨平台同步、企业官方内容统一发布,还是垂直领域账号矩阵运维,本质上都需要一套标准…...

DSP F28335 ADC配置避坑指南:从官方例程到实战,我踩过的那些时钟和采样模式的坑

DSP F28335 ADC实战避坑手册:时钟配置与采样模式的高效调优策略 第一次接触F28335的ADC模块时,我像大多数工程师一样,直接套用了TI官方例程的配置参数。结果在电机控制项目中,采样值总是出现周期性波动,导致PID调节异常…...

AAEON PICO-ASL4工业级Pico-ITX单板计算机解析与应用

1. AAEON PICO-ASL4工业级Pico-ITX单板计算机深度解析在工业自动化和边缘计算领域,对小型化、低功耗且高性能计算设备的需求日益增长。AAEON推出的PICO-ASL4正是针对这一需求设计的解决方案。这款采用Pico-ITX规格的单板计算机(SBC)集成了Intel最新的Atom x7000RE系…...

Anthropic Claude API用户代理插件:伪装请求头绕过限制与优化调用

1. 项目概述与核心价值 最近在折腾一些AI应用开发,发现一个挺有意思的GitHub项目: tenorduckpate119/opencode-anthropic-user-agent-plugin 。乍一看这个仓库名有点长,但拆解一下就能明白它的核心价值——这是一个针对Anthropic Claude A…...

以物理定律约束智能算法,用镜像技术重构时空感知

以物理定律约束智能算法,用镜像技术重构时空感知——镜像视界新一代空间智能可信技术白皮书前言当下空间智能与数字孪生产业,深陷纯数据驱动算法脱离物理逻辑、时空感知失真、推演结果不可控、系统可信度不足的行业困境,智能算法黑箱、时空基…...

DeepSeek-V4-pro 接入 Claude Code 教程

本教程介绍了如何将 DeepSeek 的最新模型(V4 Flash / V4 Pro)通过 API 的方式接入 Claude Code,打造极具性价比的本地 AI 智能代理,并解锁百万级上下文与最高思考等级。 核心亮点 绕过官方模型限制:无订阅也可使用 C…...

基于 Simulink 的数字控制延时补偿与稳定性分析深度实战教程

目录 🎯 一、 核心痛点:为什么算法上板就“发疯”? 🛠️ 二、 详细建模过程:复现“炸机”现场 第一步:搭建含真实延时的被控对象 第二步:频域透视——伯德图验证 💻 三、 核心代码与算法实现 策略 A:一拍超前预测(One-Step-Ahead Prediction) 策略 B:改进…...

基于Simulink的储能变流器(PCS)并网预同步与离/并网无缝切换控制​

目录 手把手教你学Simulink——基于Simulink的储能变流器(PCS)并网预同步与离/并网无缝切换控制​ 摘要​ 一、背景与挑战​...

想在Win10任务栏显示秒数?试试用StartAllBack配合注册表修改(附详细步骤)

在Windows 10任务栏精准显示秒数的完整方案 每次盯着任务栏的时间区域,总觉得少了点什么?对于需要精确计时的工作场景——比如直播倒计时、程序调试或是单纯的时间强迫症患者来说,系统默认隐藏秒数的设计确实不够友好。虽然微软在Windows 10…...

千问 LeetCode 2127.参加会议的最多员工数 public int maximumInvitations(int[] favorite)

这道题是图论中的经典问题,考察的是基环树的处理。🧠 题目分析1. 建模:将员工看作图的节点,favorite[i] 表示从节点 i 指向节点 favorite[i] 的一条有向边。 2. 图的结构:由于每个节点出度为 1,这个图由若…...

Python初学者项目练习9--对简单列表元素排序

一、练习题目 给定一个简单列表,对其元素进行排序简单列表:元素类型不是复合类型(列表/元组/字典) 示例: 形式1:[10,20,30,40] 形式2:[‘aa’, ‘bb’, ‘cc’…...

【赵渝强老师】Hadoop的伪分布部署模式

Hadoop的安装和部署是大数据生态圈体系中最麻烦的一个。Hadoop部署完成后,进一步地部署Spark和Flink就非常容易了。Hadoop的部署模式分为本地模式、伪分布模式和全分布模式。在学习完成了ZooKeeper的相关内容后,还将进一步地学习Hadoop HA的部署。这里重…...

千问 LeetCode 2122.还原原数组 public int[] recoverArray(int[] nums)

这道题的核心思路是枚举 双指针验证。🧠 解题思路1. 排序:首先将 nums 数组排序。排序后,最小的元素 nums[0] 必然是原数组某个元素减去 k 得到的(即 lower 数组中的最小值)。 2. 枚举 k:我们遍历排序后…...