硅基计划2.0 学习总结 贰


一、程序逻辑控制(顺序、选择&循环)

顺序结构就不多介绍了,就是各个语句按照先后顺序进行执行

(1)选择结构

三大选择类型:if、if-else、if-else if-else以及悬浮else的问题

基本已经在之前在C语言文章已经讲过,这里不过多赘述

只需要注意两个问题

1、Java中条件表达式只能是布尔型(Boolean,即结果是True或False)

2、表达式不能写的太复杂,比如你把短路表达式写进去,编译器可能会报错之前的C语言博客https://blog.csdn.net/Pluchon/article/details/147186769?fromshare=blogdetail&sharetype=blogdetail&sharerId=147186769&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

这里我们着重来讲下在Java中代码书写风格:示例代码↓

int num1 = 5;
if (num1 % 2 == 0) {System.out.println("是偶数");} else {System.out.println("是奇数");
}
int num2 = -1;
if (num2 > 0) {System.out.println("是正数");} else if (num2 < 0) {System.out.println("是负数");} else {System.out.println("是0");
}

在Java中,我们起始大括号“{”写在条件判断右边

而结束大括号“}”写在左边并且写在else之前

如果你有很多代码需要格式化成这种格式怎么办?

在Java的一个编译器Idea中,我们可以选中区域按住快捷键Ctrl+Alt+L

这个之前也有介绍过,但是在Java中有几个特殊之处:之前的博客文章https://blog.csdn.net/Pluchon/article/details/147191166?fromshare=blogdetail&sharetype=blogdetail&sharerId=147191166&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

1、Switch表达式可写字符型,比如下面这段代码,结果自然就是输出正确啦

char str1 = '中';switch (str1) {case '中':System.out.println("输出正确");break;default:System.out.println("输出错误");break;}

2、表达式不能是Long、Float、Double、Boolean这四大类

(2)循环结构

这个之前也介绍过了,但是在Java中有几个特殊之处:之前的博客文章https://blog.csdn.net/Pluchon/article/details/147191166?fromshare=blogdetail&sharetype=blogdetail&sharerId=147191166&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link1、Java中不可用写while(1)这种死循环,要写也只能写while(true)

2、Java中创建循环有快捷方式:输入for后选择fori,直接生成循环模板

3、之前的博客文章有个寻找素数的题,里面有个循环终止条件

4.在Java中我们开平方可直接写成Math.sqrt()即可

我们写一个求水仙花数的Java代码:

public static void main6(String[] args) {//求出0~n之间的所有“水仙花数”并输出int simple4 = 1;while(simple4<10){System.out.print(simple4+" ");simple4++;}System.out.print("\n");int num3 = 10;while(num3<=99999){int count = 0;//先统计是几位数int temp = num3;while(temp != 0) {temp /= 10;count++;}int sum = 0;//用来计算次方和temp = num3;while(temp != 0){sum += Math.pow(temp%10,count);temp /= 10;}if(sum==num3){System.out.print(num3+" ");}num3++;}}

二、程序输入&输出

(1)程序的输出

基本上跟C语言差不多,唯一有区别的就是print和println,以下是区别:

System.out.println("hello world");//这个是换行输出
System.out.print("hello world"+" ");//这个是不换行输出
System.out.printf("%s","hello world");//这个是格式化规范输出,很少使用

(2)程序的输入

对比C语言我们Java的输入需要使用Scanner包装类处理我们的输入

其中必须写的一行代码:

import java.util.Scanner;
Scanner sc = new Scanner(System.in);

注意:我们在输入Scanner后回车,会自动进行导包操作

Scanner后面的sc可以取其他名字,但建议sc


其次,我们再创建变量,接收我们输入的值

int input = sc.nextInt();

注意:你输入的是什么类型,初始化成什么类型,目前只能读取到一个输入的值

这里我们讲下next和nextLine的区别:next遇到空格读取停止,而nextLine会读取一行的内容


在你处理完输入程序后,最后可以选择关闭Scanner的资源

sc.close();

System.out.println("年龄");int age = sc.nextInt();System.out.println("姓名");String high = sc.nextLine();//注意看这里是nextLineSystem.out.println("年龄:"+age);System.out.println("姓名:"+high);

为什么我输入年龄后敲完空格回车直接打印结果了呢,我姓名都没来得及输入啊

注意看代码,nextLine读取的是一行的内容,而你输入完年龄后回车会产生一个空行

nextLine把这一行误以为是你输入的内容,把它读取走了

只需要再添加一个nextLine来读取空白行就好

System.out.println("年龄");int age = sc.nextInt();sc.nextLine();//单独添加这一行,让这一行把空行读走System.out.println("姓名");String high = sc.nextLine();System.out.println("年龄:"+age);System.out.println("姓名:"+high);


循环输入,我们就写一个求和的循环输入吧

int sum = 0;while(sc.hasNextInt()) {int input = sc.nextInt();//←毕竟这里是nextIntsum += input;}System.out.println(sum);

hasNextInt中int类型表示你输入除整数以外的数循环终止

建议输入什么就写什么类型的hasNext

注意这段代码有个陷阱:

你提前终止循环输入,会导致你输入的数没有加到sum中去,你输入完数后回车以下
此时再按ctrl+d才会有正确结果

三、使用方法

public static void main(String[] args) {

我们上面那一行就是main方法的基本格式

public static是修饰符,void是返回类型,main是方法名,括号里的东西是形参

你可以把方法理解成一个工厂,原材料进去成品出来

Java中的方法不需要声明,而且你写哪里都可以

毕竟Java是全局搜索的,而且方法不可以嵌套,不像C/C++函数一样

其生命周期,作用域,就是在“{}”内部,进入开始,出去结束 如何调用方法呢?

我们这里创建一个求两数之和的方法,然后就跟C语言调用函数一样去调用方法

public static int addSimple (int num1,int num2){int ret = num1+num2;return ret;}

如果这个方法有返回类型,我们就用一个变量来接收

如果方法无返回值,则默认是为void,不需要写变量来接收

注意你方法返回的是什么类型,你就需要用什么类型去接收

int result = addSimple(1,2);

因此我们方法的创建和调用之间形成了三匹配:

方法返回类型,返回值类型,接受方法返回值的变量的类型

你肯定写过在C语言中通过函数交换两个数字,用的是地址

但是在Java中,不存在地址的概念,所以Java很安全

public static void swap(int num3,int num4){//这个是方法的定义int temp = num3;num3 = num4;num4 = temp;
}int num3 =1,num4 = 2;swap(1,2);System.out.println(num3+" "+num4);

我们发现并没有交换,原理跟C语言差不多,你形参只是实参的一份临时拷贝

也就是说形参有自己的一块空间,你交换了形参并不等于交换了实参

在Java中只有传值调用,而且方法调用同样是要在栈上开辟空间

四、方法重载

接着我们将方法重载,这个跟C++很像

我们每个重构的方法可以去相同的方法名,在方法调用的时候编译器自己选择

重载三个条件

方法名相同,(参数列表/参数类型/参数个数)不同,并且和返回类型无关!!

我们就拿两数之和来举例

public static int addSimple (int num1,int num2){int ret = num1+num2;return ret;//return作为方法结束的标志}public static double addSimple (double num1,double num2){double ret = num1+num2;return ret;}int ret1 = addSimple(1,2);double ret2 =addSimple(1.5,2.5);

下满那个方法就是addSimple方法的重载,这个重构的方法是专门求浮点型的

函数返回值支持链式表达式,比如return (1/2)+6

仅仅改变方法返回值类型是不会构成方法重载的

 五、方法递归

在C语言中函数有递归,那在Java中方法自然也有递归,基本上和C语言类似

这里列出特殊之处:如果你无线递归下去,没有终止条件,会导致栈溢出,报错如下

给出一个例题练习:递归一个数字,并把各个位数数字求和,比如2255,各个位数之和是14

public static void print(int num){if(num<10){System.out.print(num+" ");}else {print(num / 10);//递推System.out.print(num % 10+" ");//回归的时候打印}}int ret5 = addPlus(2255);
System.out.println(ret5);

为什么不写else会导致栈溢出?
这是因为在if中不存在return语句,return语句作用就是终止后面代码执行
即使你的num小于了10,上面执行完了,下面的else部分还是会执行


之前在C语言已经写过很多递归练习,这里给出之前写的博客链接,写法基本上一致

C语言中递归介绍和练习https://blog.csdn.net/Pluchon/article/details/147530549?fromshare=blogdetail&sharetype=blogdetail&sharerId=147530549&sharerefer=PC&sharesource=Pluchon&sharefrom=from_linkC语言中递归经典练习https://blog.csdn.net/Pluchon/article/details/147514375?fromshare=blogdetail&sharetype=blogdetail&sharerId=147514375&sharerefer=PC&sharesource=Pluchon&sharefrom=from_link

这里给出Java递归的汉诺塔问题的代码

public static void hanNuoTa (int num,char pos1,char pos2,char pos3){if(num==1) {//递归终止条件System.out.print(pos1+"→"+pos3+" ");}else {//一定要写else,因为递归式子中无return,会导致无限递归hanNuoTa(num - 1, pos1, pos3, pos2);System.out.print(pos1 + "→" + pos2+" ");hanNuoTa(num - 1, pos2, pos1, pos3);}}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int input = sc.nextInt();hanNuoTa(input,'A','B','C');}


作者基础不是很强,文章撰写难免会有疏漏之处,欢迎指出,我们友好交流


Git码云仓库链接:

本文章使用的代码https://gitee.com/pluchon/java-career/tree/master/TestProject20250515/src


END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80927.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ最新入门教程

文章目录 RabbitMQ最新入门教程1.什么是消息队列2.为什么使用消息队列3.消息队列协议4.安装Erlang5.安装RabbitMQ6.RabbitMQ核心模块7.RabbitMQ六大模式7.1 简单模式7.2 工作模式7.3 发布订阅模式7.4 路由模式7.5 主题模式7.6 RPC模式 8.RabbitMQ四种交换机8.1 直连交换机8.2 主…

工具学习_VirusTotal使用

VirusTotal Intelligence 允许用户在其庞大的数据集中进行搜索&#xff0c;以查找符合特定条件的文件&#xff0c;例如哈希值、杀毒引擎检测结果、元数据信息、提交时的文件名、文件结构特征、文件大小等。可以说&#xff0c;它几乎是恶意软件领域的“谷歌搜索引擎”。 网页使…

计算机系统----软考中级软件设计师(自用学习笔记)

目录 1、计算机的基本硬件系统 2、CPU的功能 3、运算器的组成 4、控制器 5、计算机的基本单位 6、进制转换问题 7、原码、反码、补码、移码 8、浮点数 9、寻址方式 10、奇偶校验码 11、海明码 12、循环冗余校验码 13、RISC和CISC 14、指令的处理方式 15、存储器…

扬州卓韵酒店用品:优质洗浴用品,提升酒店满意度与品牌形象

在酒店提供的服务里&#xff0c;沐浴用品占据了非常重要的地位&#xff0c;其质量与种类直接关系到客人洗澡时的感受。好的沐浴用品能让客人洗澡时感到舒心和快乐&#xff0c;反之&#xff0c;质量不好的用品可能会影响客人整个住宿期间的愉悦心情。挑选恰当的洗浴用品不仅能够…

学习笔记:黑马程序员JavaWeb开发教程(2025.4.5)

12.4 登录认证-登录校验-会话跟踪方案一 设置cookie&#xff0c;服务器给浏览器响应数据&#xff0c;通过control方法形参当中获取response&#xff0c;调用response当中的addCookie方法实现 获取cookie&#xff0c;调用getCookie方法 用户可以通过浏览器设置禁用cookie 跨域…

进程替换讲解

1. 基本概念 1.1 进程替换 vs. 进程创建 进程创建&#xff1a;使用fork()或clone()等系统调用创建一个新的子进程&#xff0c;子进程是父进程的副本&#xff0c;拥有相同的代码和数据。进程替换&#xff1a;使用exec系列函数在当前进程中加载并执行一个新的程序&#xff0c;替…

【微服务】SpringBoot + Docker 实现微服务容器多节点负载均衡详解

目录 一、前言 二、前置准备 2.1 基本环境 2.2 准备一个springboot工程 2.2.1 准备几个测试接口 2.3 准备Dockerfile文件 2.4 打包上传到服务器 三、制作微服务镜像与运行服务镜像 3.1 拷贝Dockerfile文件到服务器 3.2 制作服务镜像 3.3 启动镜像服务 3.4 访问一下服…

1.2.2.1.4 数据安全发展技术发展历程:高级公钥加密方案——同态加密

引言 在密码学领域&#xff0c;有一种技术被图灵奖得主、著名密码学家Oded Goldreich誉为"密码学圣杯"&#xff0c;那就是全同态加密&#xff08;Fully Homomorphic Encryption&#xff09;。今天我们就来聊聊这个神秘而强大的加密方案是如何从1978年的概念提出&…

vllm量化03—INT4 W4A16

本系列基于Qwen2.5-7B&#xff0c;学习如何使用vllm量化&#xff0c;并使用benchmark_serving.py、lm_eval 测试模型性能和评估模型准确度。 测试环境为&#xff1a; OS: centos 7 GPU: nvidia l40 driver: 550.54.15 CUDA: 12.3本文是该系列第3篇——INT4 W4A16 一、量化 f…

第二十五天打卡

常见报错类型 try-except-else-finally 语句 首先执行try语句&#xff0c;若正确直接执行else语句 若try语句发生错误&#xff0c;则判断错误类型&#xff0c;执行错误类型对应的except语句&#xff0c;不执行else语句 finally语句无条件执行&#xff0c;多用于资源保存&…

城市扫街人文街头纪实胶片电影感Lr调色预设,DNG/手机适配滤镜!

调色详情 城市扫街人文街头纪实胶片电影感 Lr 调色是通过 Lightroom&#xff08;Lr&#xff09;软件&#xff0c;对城市街头抓拍的人文纪实照片进行后期调色处理。旨在赋予照片如同胶片拍摄的质感以及电影般浓厚的叙事氛围&#xff0c;不放过每一个日常又珍贵的瞬间&#xff0c…

【hadoop】Kafka 安装部署

一、Kafka安装与配置 步骤&#xff1a; 1、使用XFTP将Kafka安装包kafka_2.12-2.8.1.tgz发送到master机器的主目录。 2、解压安装包&#xff1a; tar -zxvf ~/kafka_2.12-2.8.1.tgz 3、修改文件夹的名字&#xff0c;将其改为kafka&#xff0c;或者创建软连接也可&#xff1…

UDP 多点通信

一、setsockopt/getsockopt 函数详解 1. 函数原型 c #include <sys/socket.h> int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);…

说一说Node.js高性能开发中的I/O操作

众所周知&#xff0c;在软件开发的领域中&#xff0c;输入输出&#xff08;I/O&#xff09;操作是程序与外部世界交互的重要环节&#xff0c;比如从文件读取数据、向网络发送请求等。这段时间&#xff0c;也指导项目中一些项目的开发工作&#xff0c;发现在Node.js运用中&#…

Charles抓包并破解ProtoBuf请求

安装Charles并抓包 如果是外网的需要root安装一系列证书等&#xff0c;详细见参考文章&#xff1a; 在雷电模拟器安卓7.0上使用Charles抓包详细教程 遇到如下问题&#xff1a; 1.粘贴到目录/system/etc/security/cacerts内&#xff0c;粘贴不了。需要打开这个 2.模拟器wifi打…

Odoo 18 安全组与访问权限管理指南

Odoo 18 安全组与访问权限管理指南 一、准备工作&#xff1a;在自定义模块中创建安全配置文件 创建 security 文件夹 在自定义模块内创建名为 security 的文件夹&#xff0c;用于存放安全组和访问权限的定义文件。 二、定义模型访问权限&#xff1a;ir.model.access.csv 文…

使用lldb查看Rust不同类型的结构

目录 前言 正文 标量类型 复合类型——元组 复合类型——数组 函数 &str struct 可变数组vec Iter String Box Rc Arc RefCell Mutex RwLock Channel 总结 前言 笔者发现这个lldb挺好玩的&#xff0c;可以查看不同类型的结构&#xff0c;虽然这好像是C的东…

uniapp使用ui.request 请求流式输出

正文&#xff1a; 在现代Web开发中&#xff0c;实时数据流和长时间运行的请求变得越来越常见&#xff0c;尤其是在处理大量数据或进行实时通信时。在这种情况下&#xff0c;uniapp 提供的 ui.request 请求方法可以帮助我们轻松实现流式输出请求。本文将介绍如何使用 uni.reques…

如何恢复被勒索软件加密的服务器文件(解密与备份策略)

针对勒索软件加密文件的恢复和解密策略&#xff0c;结合当前数据安全最佳实践&#xff0c;整理应对指南如下&#xff1a; 一、文件解密与修复方法 立即隔离设备‌ 断开网络连接并禁用共享功能&#xff0c;防止病毒横向传播 通过文件后缀异常&#xff08;如.locked、.wxx&…

JS,ES,TS三者什么区别

Java Script(JS)、ECMAScript(ES)、TypeScript(TS) 的核心区别与关联的详细解析,结合技术背景、设计目标及应用场景展开说明: 一、核心定义与关系 JavaScript(JS) 定义:一种动态类型、基于原型的脚本语言,由 Netscape 公司于 1995 年首次开发,用于网页交互功能。角…