- 博客(21)
- 收藏
- 关注
原创 Java巅峰之路---进阶篇---面向对象(三)
抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样的,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法。解释:例如定义一个吃东西的方法,一个程序员认为应该定义为void eat(String name){…},另一个程序员又认为应该定义为String eat(){…}。这种无法确定方法体,那就在父类中统一确定一种格式,即public abstract void eat();就行抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类。
2024-08-29 21:16:35
1147
2
原创 Java巅峰之路---进阶篇---面向对象(二)
什么是多态?对象的多种形式。多态的表现形式父类类型 对象名称 = 子类对象;多态的前提?● 有继承/实现关系● 有父类引用指向子类对象● 有方法的重写多态的使用场景不同的对象类别(学生、老师、管理者)要使用一个方法(注册)多态的好处?使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利。演示demoreturn age;@OverrideSystem.out.println("学生的信息为:" + getName() + "," + getAge());
2024-08-22 20:45:08
1146
原创 day02 初学c++第二章
它在功能上和if、else if的组合使用基本一致,只是提供了另外一种更为简洁的针对多条件判断的写法枚举:本质上是一个被命名的整型常数的集合在c\c++语言中它是一种基本数据类型其主要作用是提高代码的可读性、可维护性和键入性因为枚举可以将一些数字或字符串符号化,以此增强程序的可读性和可维护性。
2024-08-20 22:14:05
1020
原创 Java巅峰之路---进阶篇---面向对象(一)
java中提供了一个关键字extends,用这个关键字,我们可以让一个类和另一个类建立起继承关系其中,Student称为子类(派生类),Person称为父类(基类或超类)使用继承的好处● 可以把多个子类中重复的代码抽取到父类中了,提高代码的复用性。● 子类可以在父类的基础上,增加其他的功能,使子类更加强大。什么时候用继承?当类与类之间,存在相同(共性)的内容,并满足子类是父类的一种,就可以考虑使用继承,来优化代码● 子类构造方法的第一行,有一个默认的super();
2024-08-18 21:56:00
993
原创 Java巅峰之路---项目篇---学生信息管理系统
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册。 用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册。 3,判断当前用户的身份证号码和手机号码是否一致, 2,密码键盘输入两次,两次一致才可以进行注册。 如果不一致,则提示:账号信息不匹配,修改失败。 键盘录入要修改的学生id,需要满足以下要求。 判断验证码是否正确,如不正确,重新输入。 如果一致,则提示输入密码,进行修改。 打印所有的学生信息,需要满足以下要求。
2024-08-12 22:57:44
1079
原创 Java巅峰之路---基础篇---字符串
java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。注意点字符串的内容是不会发生改变的,他的对象在创建后不能被更改这两段代码中,"bbb"是创建了一个新的字符串对象,然后再赋值给变量name,但"aaa"并没有被改变,这个过程中一共产生了两个字符串StringBuilder可以看成是一个容器,创建之后里面的内容是可变的提高字符串的操作效率StringJonier 跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
2024-07-25 19:24:53
1041
原创 Java巅峰之路---基础篇---综合练习(面向对象)
格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new 对象的时候),这些信息就应该被确定下来。思路:首先需要创建一个Role类,成员变量为姓名和血量以及写出对应的set和get方法,这里还需要有一个attack(Role r1, Role r2)方法,谁打了谁,谁又掉血,所以这个行为要写在Role类里边。
2024-07-14 13:01:56
880
原创 Java巅峰之路---基础篇---面向对象
面向:拿、找对象:能干活的东西面向对象编程:拿东西过来做对应的事情类(设计图):是对象共同特征的描述;对象(能帮我们干活的东西):是真实存在的具体东西。public class 类名{1、成员变量(代表属性,一般是名词)2、成员方法(代表行为,一般是动词)3、构造器4、代码块5、内部类只含变量与方法的类(简单)int age;System.out.println("吃东西");System.out.println("睡觉");gf1.eat();
2024-07-08 21:03:03
1237
原创 Java巅峰之路---基础篇---综合练习(不含面向对象知识)
需求:一个大v直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。需求:投注号码由6个红色球号码和1个蓝色球号码组成,红色球号码从1~33中 选择;蓝色球号码从1~16中选择,用户输入6个红球号码和1个蓝球号码,判断其中了多少奖金。需求:某系统的数字密码(大于0),比如1983,采用加密方式进行传输;规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数。
2024-07-07 19:43:17
693
原创 Java巅峰之路---基础篇---方法
方法(method)是程序中最小的执行单元定义格式:public static void 方法名(){方法体(就是打包起来的代码);调用格式:方法名();定义格式:public static void 方法名(参数1,参数2,...){...}调用格式:方法名(参数1,参数2,...);注意:方法调用时,形参必须与实参一一对应(数量与类型),否则程序会报错定义格式:返回值类型方法名(参数){//参数有无看自己需求方法体(就是打包起来的代码);return 返回值;
2024-07-07 11:53:34
1287
原创 day01 初学c++第一章
1、字符类型数据与数字进行运算时,字符类型数据会变成数字参与运算,结果自然也就是数字2、输出:直接将"数字"输出时,结果会是ASCII表对应的数据;直接将字母输出时,结果仍然是字母;间接将"数字"输出时,结果就是数字。
2024-07-06 11:34:55
1380
原创 day10 | 用栈实现队列、用队列实现栈、有效的括号、删除字符串中的所有相邻重复项
push操作时,先让queue2接收,若queue1不为空,则将1队列的元素放入2队列中,此时2队列放的元素跟栈元素放出的顺序一致,最后交换1队列和2队列即可。queue1:该队列放的元素跟栈元素放出的顺序一致,例如压入1,2,3三个元素,栈元素:1,2,3;第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。
2024-06-26 12:38:37
721
原创 day09 | 翻转字符串里的单词、右旋字符串
为设置单词之间的空格需要注意,当slow==0时,此时不需要动slow。= 0时,我们需要在填充单词开始之时手动添加一个空格。思路: 首先还是先反转整个字符数组,然后反转[0,k-1]区间内的字符数组,最后反转[k,s.length-1]区间内的字符数字就完成了。思路:首先需要得到有效的字符串数组(去除多余空格),然后将整个数组反转,最后将单词反转就完成了。设置快慢指针slow,fast;slow定位在要修改的初始下标,fast一直遍历数组。
2024-06-19 13:52:41
457
原创 day08 | 反转字符串、反转字符串||、替换数字
思路:java不能修改原字符串,所以我们需要定义一个新数组(长度需要求出);首先我们需要的出新数组的长度,不难得出:字符串s中每出现一个数字,新数组的长度就需要加5,然后进行填充即可。思路:用到左右指针left,right,分别从数组最左端和最右端开始遍历,过程中进行交换操作即可。思路:本题其实就是让你反转 长度为2k区间 的前k的字符,不过需注意若尾数不够k个,就要全部反转。当然,我们也可以直接用StringBuffer或StringBuilder来解决。
2024-06-16 15:57:16
664
原创 day07 | 四数相加II、四数之和
思路:这道题目是四个独立的数组,只要找到A[i] + B[j] + C[k] + D[l] = 0就可以,不用考虑有重复的四个元素相加等于0的情况。如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,right--;如果 nums[i] + nums[left] + nums[right] < 0 说明 此时 三数之和小了,left++;思路:在三数之和的基础上再加一层for循环以及二级剪枝操作即可。
2024-06-13 21:10:04
898
1
原创 day06 | 有效的字母异位词、两个数组的交集、快乐数、两数之和
思路:题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现!所以这道题目使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止。思路:本题我们不仅要知道元素有没有遍历过,还要知道这个元素对应的下标,所以我们需要定义一个map来解决。思路:本题要求输出结果每个元素是唯一的,明显需要有去重操作,所以可以定义两个set来解决。思路:由于s和t都是由26个小写字母构成,数量很少,直接定义一个26空间的数组即可。key:用来存放遍历的元素。
2024-06-12 22:51:35
1149
原创 day04 |两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II
满足:x + quan1*(z+y) + y= 2*x + 2*quan2*(z+y) + 2 * y, 化简得z = x + (2*quan2-quan1+1)*(z+y)所以之后fast从相遇点出发,slow从head出发时,slow是不可能进入环内的,slow与fast一旦相等,那就是链表开始入环的第一个节点!思路:用到快慢指针,在两者相交之前,fast指针一次两步,slow指针一次一步。p1:遍历headA,为空时则遍历headB,实现"合并链表"思路:采用合并链表的思想,定义p1,p2两指针。
2024-06-11 15:38:21
773
原创 day03| 移除链表元素、设计链表、反转链表
思路:首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null,还要定义一个next指针用来保存当前节点的后一个节点。循环时需要先赋值next,然后进行翻转操作,之后移动pre,cur两指针。-设置一个虚拟头结点再进行删除操作。-直接使用原来的链表进行删除操作。
2024-06-08 15:19:09
571
原创 day02| 有序数组的平方、长度最小的子数组、螺旋矩阵||
nums暴力思路:直接对数组每个数先进行平方,然后输出排序后的数组。时间复杂度O(n*longn),力扣上耗时5ms空间复杂度O(n)双指针思路:数组其实是有序的, 只不过负数平方之后可能成为最大数了。那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间。另一种与之相反的思路:前者是直接找最大平方数,次大平方数...,是从最左和最右开始遍历;其实我们也可以从中间开始遍历,直接找最小数,倒数第二小的数...,之后再将没遍历完的数再加进来即可。
2024-06-07 12:29:51
541
原创 day01| 二分查找、 移除元素
思路:用二分法先得到第一个大于等于target的下标若返回值等于nums.length或返回值对应的数组元素不是target,则表示没有该元素,返回[-1,-1]即可,否则此时的返回值就是第一个位置;然后在该位置遍历数组,持续更新end就可以找到最后一个位置了。int end;
2024-06-05 18:02:20
746
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人