java后端开发day14--之前练习的总结和思考

ops/2025/2/14 5:43:19/

1.感受

这两天学点儿新的就直接上手打代码,真的是累死个人。我唯一的感受就是,课听完了,代码也跟着打完了(是的,跟着打的,没自己打),感觉自己脑袋里乱乱的,对代码的分区啊作用啊啥的,感觉内理解的程度有点儿呼之欲出,可能和我之前专业课学习积累了点儿经验有关吧,但是听了几天课就感觉自己有点儿体系,但是要写出来,就又觉得自己实在不成火候。

再往下学感觉又有点儿堆积之前的知识了,所以干脆停一天沉淀一下。好好想想之前的代码,每个变量啊语句啊方法啊之间的联系,由啥想到了啥,思路是怎么形成的,然后不同的需求还要考虑好几种情况,怎么用一种代码概括地解决同一种但会有变量的问题和需求。

害,技术饭难吃呦。

2.需要会的思想

1.运算符与10(数字)

比如给了一个数字:8956
这个时候就问了:个位 十位 百位 千位 或者 类似于验证码的分开和组合
个位:对10取余
十位:/10再对10取余–>/10%10
百位:/100再对10取余–>/100%10
千位:/1000

反正遇到数字就机灵一点,盯住这几位数,再根据实际要求进行计算。

2.平方根的正反计算(逆运算)

就是你不知道怎么计算平方根的时候,就要记得反过来想。
简而言之就是,和运算符有关的,都要想着逆运算。
提到平方根,就要连平方计算也想到。
正反都思考到,有的问题就能用很简单的代码解决。

java">//在代码当中
//从1开始循环,拿着数字的平方跟原来的数字进行比较
//如果小于的,那么继续往后判断
//如果相等,那么当前数字就是平方根
//如果大于的,那么前一个数字就是平方根的整数部分
//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextIn();
//2.从1开始循环判断
//开始:1  结束:number
for(int i = 1; i <= number; i++){//用i*i 再和number进行比较if(i * i == number){System.out.println(i +"就是"+number+"的平方根" );break; //一旦找到了,循环就可以停止了,后面的数字就不需要再找了,提高代码的效率}else if(i * i > number){System.out.println((i-1) +"就是"+number+"平方根的整数部分" );}
}

3.flag的运用

判断什么东西是否是XXX的时候,只有是否这里两种结果,就可以用flag代替具体输出语句。
比如:一开始就认定是一个质数–>flag = true;
然后在进行判断,不是就变为false,最后判断直接输出flag即可。

java">//分析:
//1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int number = sc.nextIn();//定义一个变量,表示标记
//标志number是否是一个质数
//true:是一个质数
//false:不是一个质数//表示最初就认为number是一个质数
boolean flag = true;//2.判断这个整数是不是一个质数
//写一个循环,从2开始判断,一直判断到number-1为止
//看这个范围内,有没有数字可以被number整除
for (int i = 2; i <= number-1; i++){//i依次表示这个范围内的每一个数字//看number是否能被i整除就可以了if(number % i == 0){flag = false;//System.out.println(number + "不是一个质数");break;}
}
//只有当这个循环结束了,表示这个范围之内所有的数字都判断完毕了
//此时才能断定number是一个质数
if(flag){System.out.println(number + "是一个质数");
}else{System.out.println(number + "不是一个质数");
}

4.方法打包

一开始我以为单纯的重复的代码需要打包,但是后边儿的练习证明了,凡是功能性的行为,都需要用方法打包。
所以后边儿的练习题,基本都只碰到个需求,就需要打包写一个方法。

5.数组长度

定义或者判断条件,比如索引啊啥的,就可以直接用数组长度的各种表达式来替代,就可以少定义一个变量。

3.必备的代码块

1.计数

java">int count = 0; //循环外定义
count++;  //循环内计数

2.大写字母和小写字母

java">chs[i] = (char)(97); //小写字母 a
chs[i] = (char)(65); //大写字母 A

3.数字交换

需要有个临时值接受其中一个的初始值。

java">int temp = int a;
int a = int b;
int b = int temp;

javabean_115">4.面向对象必备的javabean

当然,我都是直接ptg插件偷懒的来着。
说说javabean存在的好处吧,我原来也觉得这个东西没啥用
昨天的文字版格斗,JavaBean的作用很明显
如果你想改变一个程序的修饰性的东西,就比如格斗的招式,血量描述,
可以直接在javabean中添加,不需要大改main里的方法啊输出语句啥的
可能这就是封装的好处吧,,,
总之,不碰主体行为代码的修改就是好修改。

4.前面的概念理解(当复习了)

1.面向对象

就具体的一个东西
这个东西的属性和功能得在这个东西的类里体现
(不管这个东西是活的还是死的)

2.方法

在执行类(要打psvm)中,main外。
就是对上面的变量要进行的活动的代码的打包。
辨识:和构造方法的区别是它带static。

3.构造方法

javabean类里(没有main的类)
构造作用
含setter和getter语句
可以直接给变量赋值

5.怎么让代码无中生有

1.判断是否是面向对象的

其实感觉刚开始没学面向对象的时候就直接写主体代码,
感觉学了之后就得全是面向对象的代码了。
看有没有一个主体,它既有属性又有行为,就是面向对象的代码。

javabean_144">2.有的话,写javabean类

就先全是private定义属性,给啥了定义啥。
然后直接一个ptg(bushi)。
分开说,基础需要有:无参的构造方法、带全部参数的构造方法,每个参数一个get+set方法
额外的:看题目具体条件,对于属性还需要加些什么限制,比如特定的输出语句,需要键盘录入等等
不过额外的可以等开始写主体写了一部分再改

3.分析题目

和之前一个思路,拿我之前的练习举个例子(买飞机票的内个练习)

原文链接:https://blog.csdn.net/2301_80071187/article/details/145482833

读题目分限定条件:淡季or旺季(好多月份)经济舱or头等舱(两个因素)
两个条件对应两个板块:淡旺季涉及月份多,所以在main主体中
经济舱或头等舱只涉及两个选择,输出代码规格相同,可以用方法打包
方法里的形参都是不稳定的需要输入的因素
需要票价(键盘输入),舱位(键盘输入),头等舱折扣(淡旺季不同需输入),经济舱折扣(淡旺季不同需输入)

分析代码分块:(素数的练习,同一个链接)
把题目分成几个个体:101~200、素数、多少
依次分析对应关键字:101~200(遍历for),素数(是否if),多少(遍历)
具体需要定义的变量:多少(count)、for里的范围(i、j),是否(用来判断的flag)

4. 写方法

就是第三步,挨个儿分析哪个属性有什么行为之后,开始写方法。

还是拿我买飞机票的练习举例子:
方法里的形参都是不稳定的需要输入的因素
需要票价(键盘输入),舱位(键盘输入),头等舱折扣(淡旺季不同需输入),经济舱折扣(淡旺季不同需输入)

还有最通常的,三问:
1.我要干嘛?
2.我干这件事,需要什么才能完成?
3.方法的调用处是否需要继续使用方法的结果?

5.检查代码严谨性

就自己给自己找麻烦,把自己想象成大爷大妈,故意输错本来应该按照格式输入的东西(没说大爷大妈不好的意思),然后发现问题,就多加几个else语句,多想万一不是原题判断的那样该怎么办。

还有就是,写主体的时候,就应该有,但凡有一个判断条件,就应该正反结果都想象一下的意识,就可以直接把不严谨扼杀在摇篮里。

6.总结

大概就这些吧,毕竟我也才学十多天,写完之后倒是心里也觉得稳了一点儿。
还是得复习,多复习多思考。
还有,真不想开学。。。。。


http://www.ppmy.cn/ops/158225.html

相关文章

AI向量数据库之LanceDB快速介绍

LanceDB LanceDB 是一个开源的向量搜索数据库&#xff0c;具备持久化存储功能&#xff0c;极大地简化了嵌入向量的检索、过滤和管理。 LanceDB的主要特点 LanceDB 的主要特点包括&#xff1a; 生产级向量搜索&#xff1a;无需管理服务器。 存储、查询和过滤向量、元数据以…

游戏引擎学习第97天

回顾昨天并计划今天 在这期节目中&#xff0c;主要讲解了光照的概念&#xff0c;并进一步讨论了法线贴图光照的实现。节目的内容大致分为几个部分&#xff1a; 光照的基础概述&#xff1a;讨论了光的工作原理以及如何在编程图形时需要考虑光照问题。尽管这些概念并没有深入到…

SpringBoot分布式应用程序和数据库在物理位置分配上、路由上和数量上的最佳实践是什么?

在设计和部署Spring Boot分布式应用程序时&#xff0c;物理位置分配、路由和数据库数量的最佳实践对系统性能、可用性和可维护性至关重要。以下是相关建议&#xff1a; 1. 物理位置分配 最佳实践&#xff1a; 靠近用户部署&#xff1a;将应用实例部署在靠近用户的数据中心&a…

Go 1.4操作符指针理解

对于初学者来说操作符指针类型、指针、取地址容易混淆&#xff0c;多练就好了。 只需要记住两个符号&#xff1a;&&#xff08;取内存地址&#xff09;和*&#xff08;解引用&#xff09;。 定义和使用&#xff1a;你可以使用 & 操作符获取一个变量的内存地址&#x…

vscode关闭后如何恢复在远程服务器的终端程序运行界面

网上有很多种解决方案&#xff0c;我觉得比较好用的是screen。这里先介绍screen的安装和使用办法&#xff1a; 通过 conda 安装 screen是比较方便的方式&#xff0c;可以按照以下步骤操作&#xff1a; 通过 Conda 安装 screen 打开终端或命令行工具。确保你已经激活了 Conda 环…

防火墙是什么?详解网络安全的关键守护者

当今信息化时代&#xff0c;企业和个人在享受数字生活带来的便利时&#xff0c;也不可避免地面对各种潜在的风险。防火墙作为网络安全体系中的核心组件&#xff0c;就像一道牢不可破的防线&#xff0c;保护着我们的数据和隐私不受外界威胁的侵害。那么防火墙是什么&#xff1f;…

Vite入门指南

一、什么是Vite&#xff1f; Vite&#xff08;法语意为"快速"&#xff09;是由Vue作者尤雨溪开发的新型前端构建工具。它基于原生ES模块&#xff08;ESM&#xff09;实现&#xff0c;具有以下核心优势&#xff1a; 极速启动&#xff1a;冷启动时间比Webpack快10-10…

机器学习数学基础:22.对称矩阵的对角化

一、核心概念详解 &#xff08;一&#xff09;内积 定义与公式&#xff1a;在 n n n维向量空间中&#xff0c;对于向量 x ⃗ ( x 1 , x 2 , ⋯ , x n ) \vec{x}\ (x_1,x_2,\cdots,x_n) x (x1​,x2​,⋯,xn​)和 y ⃗ ( y 1 , y 2 , ⋯ , y n ) \vec{y}\ (y_1,y_2,\cdots,y_…