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

devtools/2025/2/13 3:56:39/

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/devtools/158369.html

相关文章

【05】RUST常用的集合函数宏类型

文章目录 常用集合VecStringHashMap 宏打印 类型Option<T> 常用集合 Vec 堆上连续内存vector可能出现扩容&#xff0c;把老元素copy到内存新位置 因此不允许let first &v[0];作用域内调用v.push(4); // 定义 let v: Vec<i32> Vec::new(); let v vec![1,…

2025 年 2 月 TIOBE 指数

2025 年 2 月 TIOBE 指数 二月头条:快,更快,最快! 现在,世界需要每秒处理越来越多的数字,而硬件的发展速度却不够快,程序的速度变得越来越重要。话虽如此,快速编程语言在 TIOBE 指数中取得进展也就不足为奇了。编程语言 C++ 最近攀升至第 2 位,Go 已稳居前 10 名,Ru…

HALCON 数据结构

目录 1. HALCON基本数据分类 1.1 图像相关数据 1.1.1 Image(图片) 1.1.2 Region(区域) 1.1.3 XLD(轮廓) 1.2 控制类数据 1.2.1 基本控制数据类型 1.2.2 handle(句柄) 2. 数组与字典 2.1 数组类型及特点 2.1.1 Iconic数组(Objects) 2.1.2 Control数组(Tu…

智能同义词处理与命中优化:提升知识库查询精度

效果展示(环境依赖请参看上一篇文章): qa.json(示例知识): 测试结果: 引言 在构建智能问答系统时,常常遇到用户提问方式多样化的问题。即使问题本质相同,表达方式可能千差万别。为了提高搜索和匹配的准确性,我们需要对原始问题进行扩展,即生成多个同义表达。这…

Rust 测试指南:从入门到进阶

1. 测试基础&#xff1a;#[test] 属性 Rust 测试的基本单位是函数。只要在一个函数前面标注 #[test] 属性&#xff0c;那么在运行 cargo test 时&#xff0c;Rust 会自动识别并执行它。例如&#xff0c;新建一个库工程 adder&#xff0c;cargo new adder --lib&#xff0c;在 …

使用 Python-pptx 库提取 PPTX 文件中的结构与文字

是的&#xff0c;使用 python-pptx 库是提取 PPTX 文件中结构和文字的理想选择&#xff0c;原因如下&#xff1a; 专门处理 PPTX 格式 python-pptx 是一个专门为处理 PPTX 文件&#xff08;.pptx 格式&#xff09;而设计的 Python 库。 它可以读取和操作 PPTX 文件的内部结构…

idea插件开发,如何获取idea设置的系统语言

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/145578160 版本要求 大于 2024.3 错误用法 网上有的说使用&#xff1a;UIUtil com.intellij.util.ui.UIUtil 代码示例&#xf…

c/c++蓝桥杯经典编程题100道(17)二叉树遍历

二叉树遍历 ->返回c/c蓝桥杯经典编程题100道-目录 目录 二叉树遍历 一、题型解释 二、例题问题描述 三、C语言实现 解法1&#xff1a;递归前序遍历&#xff08;难度★&#xff09; 解法2&#xff1a;迭代中序遍历&#xff08;难度★★&#xff09; 解法3&#xff1a…