- 博客(46)
- 收藏
- 关注
原创 写Java项目的步骤
以上工作完成,就可以开始编写Java代码实现项目的各个模块和功能,根据系统设计,可以创建类、接口和方法,并实现相应的功能。设计数据库结构,并创建相应的表和关系,可以通过关系型数据库(如mysql)或者非关系型数据库来存储和管理数据,可以通过sql语句或者Nosql查询语言来对数据进行添加,删除,查询,修改等操作。明确每个功能所要实现的目标之后进一步细化细节,能够详细的知道该功能要使用什么方法,实现成为什么样子,实现到什么程度。首先你要明确你的项目需求,明确项目的目标,项目的功能和项目的约束。
2023-10-03 20:25:05
303
3
原创 Java学习笔记------内部类
使用场景:当方法的参数是接口或者累的话,若某个类只需要用一次,则不用再单独定义一个类,可以使用匿名内部类。该格式包含了继承或实现,方法重写,创建对象,整体就是一个类的子类对象或者接口的实现类对象。静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象。System.out.println(out.this.变量名);外部类名.内部类名 对象名=new 外部类名.内部类名();格式:new 类名或者接口名(){在一个类的里面再定义一个类。
2023-09-14 20:29:35
330
原创 java学习笔记------接口
1.成员变量:只能是常量,默认修饰符:public static final。3.成员方法只能是抽象方法 默认修饰符:public abstract。接口:就是一种规则(是对行为的抽象)
2023-09-13 21:28:15
264
原创 Java学习笔记------抽象类和抽象方法
抽象类的作用:抽取共性时,无法确定方法体,就把方法定义为抽象的。强制让子类按照某种格式重写,抽象方法所在的类必须是抽象类。抽象类的构造方法的作用:当创建子类对象时,给属性进行赋值。抽象类和抽象方法的定义格式。抽象类和抽象方法的注意事项。如果一个类中存在抽象方法。
2023-09-11 22:00:34
371
原创 Java学习笔记-----包,final,权限修饰符和代码块
final修饰的变量是引用类型:变量存储的地址值不能发生改变,对象内部的可以改变。特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发、特例:如果方法中的代码是抽取其他方法中共性代码,这个方法一般也私有。包名的规则:公司域名反写+包的作用,需要全部英文小写,见名知意。使用其他类的规则:使用其他类时,需要使用全类名(包名+类名)。final修饰的变量是基本类型:变量存储的数据值不能发生改变。使用场景:在类的加载的时候,做一些数据初始化的时候使用。final可以修饰方法,类,变量。
2023-09-11 21:01:25
94
原创 Java学习笔记---多态
先判断a是否为Dog类型,如果是,则强转成Dog类型,转换之后变量名为d,如果不是,则不强转,结果直接是false。1.编译看左边:Javac编译的时候,会看左边的父类中有没有这个变量(方法),如果有编译成功,没有则编译失败。2.运行也看左边:Java运行代码的时候,实际获取的就是左边父类中成员变量的值。3.运行看右边:Java运行代码时,实际上运行的是子类的方法。多态的应用场景:根据传递对象的不同,调用不同的show方法。同类型的对象,表现出的不同形态(对象的多种形态)(作用:判断该变量是否为该类型)
2023-09-07 15:17:43
323
原创 Java学习笔记——继承(包括this,super的使用总结)
注:虚方法可以被覆写(Overriding)的方法都可以称作虚方法,因此虚方法并不需要做特殊的声明,也可以理解为除了用static、final、private修饰之外的所有方法都是虚方法。使用情景:当类与类之间,存在相同(共性)的内容,并满足子类是父类的一种,就可以考虑使用继承,来优化代码。书写格式:在继承体系中,子类出现了和父类一模一样的方法声明,我们就称子类这个方法是重写的方法。先在局部位置找然后在本类成员位置找然后在父类成员位置找,逐级往上。1.成员变量的访问特点:就近原则(谁离我近,我就用谁)
2023-08-23 14:05:41
560
原创 Java学习笔记(static静态变量)
被static修饰的成员变量,叫做静态变量,被static修饰的成员方法,叫做静态方法。static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。帮助我们做一些事情的,但是不描述任何事物的类。前面还有Javabean没写。static 的注意事项。
2023-07-05 16:20:26
265
原创 Java学习笔记
注:StringBuilder是Java已经写好的类了,Java在底层对他做了一些特殊处理,打印对象不是地址值而是属性值。当我们在调用一个方法的时候,不需要用变量来接受他的结果,可以继续调用其他的方法。StringBuilder可以看成是一个容器,创建之后的内容是可变的。以代码为例,不进行一步步命名,直接利用函数结果及其操作一步到位。public int length():返回此字符的长度。字符串的长度:字符串对象.length()数组的长度:数组名.length。作用:提高字符串的操作效率。
2023-06-07 19:33:48
762
原创 Java学习笔记
2.boolean equalslgnore Case方法(要比较的字符)注:以后只要想比较字符串的内容,就必须使用String里面的方法。1.boolean equals方法(要比较的字符串)两字符串完全一样结果才是true,否则为false。
2023-06-01 21:45:09
46
原创 5.22总结
混用弊端:先用nextInt();再用nextLine ();会导致下面的nextLine()接收不到数据。创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数组当中。特点:可以接收空格,制表符,遇到回车才停止接收。特点:遇到空格,制表符,回车就停止接收。nextLine();nextInt();注:键盘录入的两套体系不能混用。汽车的属性:品牌,价格,颜色。定义数组存储3部汽车对象。
2023-05-22 21:26:28
48
原创 5.21总结
乔峰举起拳头,打了鸠摩智一下,造成了19点伤害,鸠摩智还剩下了81点血。鸠摩智举起拳头,打了乔峰一下,造成了15点伤害,鸠摩智还剩下了85点血。鸠摩智举起拳头,打了乔峰一下,造成了13点伤害,鸠摩智还剩下了72点血。鸠摩智举起拳头,打了乔峰一下,造成了18点伤害,鸠摩智还剩下了51点血。乔峰举起拳头,打了鸠摩智一下,造成了19点伤害,鸠摩智还剩下了12点血。鸠摩智举起拳头,打了乔峰一下,造成了19点伤害,鸠摩智还剩下了19点血。鸠摩智举起拳头,打了乔峰一下,造成了3点伤害,鸠摩智还剩下了69点血。
2023-05-21 23:12:29
52
原创 5.18总结
引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值;堆内存:new出来的东西会在这块内存中开辟空间并产生地址。栈内存:方法运行时所进入的内存,变量也是在这里。基本数据类型:数据值是存储在自己的空间中;特点:赋值给其他变量,也是赋的真实的值;this的作用:区分局部变量和成员变量;this的本质:所在方法调用者的地址值;特点:赋值给其他变量,赋的是地址值;方法区:字节码文件加载时进入的内存。
2023-05-18 21:38:12
49
原创 5.17总结
当成员变量和局部变量同名时,采用就近原则就近原则:谁离我近,我就用谁。1.对象代表什么,就得封装对应的数据并提供数据对应的行为。3.没有具体的返回值(不能由return 带回结果数据)3.被private个修饰的成员只能在本类中才能访问。作用:在创建对象的时候给成员变量进行赋值的。1.方法名与类名相同,大小写也要一致。2.没有返回值类型,连void都没有。封装:如何正确设计对象的属性和方法。this关键词(指向成员变量).构造方法也叫构造器、构造凼数。区别:成员变量和局部变量。1.是一个权限修饰符。
2023-05-17 23:25:48
49
原创 5.16总结
1.成员变量(代表属性,一般是名词)2.成员方法(代表行为,一般是名词)public class 类名{在Java中,必须先设计类,才能获得对象;类名 对象名=new 类名();对象:是真实存在的具体东西;类:是对象共同特征的描述;
2023-05-16 23:53:52
47
原创 5.15总结
每个方法有不同的参数类型或参数个数,这些同名的方法构成了重载关系即同一个类中方法名相同,参数不同(个数/类型/顺序不同)的方法,与返回值无关。计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反;反码:正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反。在同一个类中,定义了多个同名的方法,这些同名的方法具有相同的功能;补码:正数的补码是其本身,负数的补码是在其反码的基础上加一;作用:可以进行判断,根据判断的内容的到不同的内容;反码是为了解决原码不能计算负数问题出现的;
2023-05-16 00:29:13
42
原创 5.14总结
当“+”操作中出现字符串的时候,这个“+”是字符串连接符,而不是算术运算符。它将会将前后数据进行一个拼接,并产生一个新的字符串。1.单独使用:++,--无论是放在变量的前面还是后面,单独写一行结果都是一样的;表达式:用运算符把字面量或变量连接起来,符合Java语法的式子称为表达式。如果把一个取值范围大的数值,赋值给取值范围小的数值,要使用强制转换。注:在代码中,如果有小数参与计算,结果有可能是不精确的。运算符:对字面量或者变量进行操作的符号。应用场景:修改淘宝的购物车商品数量;
2023-05-14 23:22:11
47
原创 5.12总结
给出快乐牛奶制造者的每日的牛奶需求,连同每个农民的可提供的牛奶量和每加仑的价格,请计算快乐的牛奶制造者所要付出钱的最小值。第一个数值,N,(0<= N<=2,000,000)是快乐的牛奶制造者的一天需要牛奶的数量。Pi(0<= Pi<=1,000) 是农民 i 牛奶的价格。首先该题需使用结构体,将牛奶数与价格绑在一起更方便排序,然后再进行排序,进行排序之后,开始计算费用,如果所需牛奶数能完全包含第i种牛奶的数量那就直接用该牛奶数乘以该牛奶每瓶费用,若否,则将n减去前面已买的数量然后用剩余数量乘以牛奶价格。
2023-05-12 00:16:23
207
原创 5.10总结
可以看出,广度优先搜索遍历的特点是:尽可能先对横向进行搜索。设x和y是两个相维着访向过的顶点,若当前以x为出发点进行搜索,则在访问x的所有未曾被访问过的邻接点之后,紧接着以y为出发点进行横向搜索,并对搜索到的y的邻接点中尚未被访问的顶点进行访问。也就是说,先访问的顶点其邻接点亦先被访问。遍历图的过程实质上是通过边找邻接点的过程,因此广度优先搜索遍历的时间复杂度和深度优先搜索遍历相同,即当用邻接矩阵存储时,时间复杂度为0(n);和深度优先搜索类似,广度优先搜索在遍历的过程中也需要一个访问标志数组。
2023-05-10 23:13:55
41
原创 5.9总结
采用面向对象方式开发的软件系统,其最小的程序单位是类,这些类可以生成系统中的多个对象,而这些对象则直接映像成客观世界的各种事物。多态:多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征;继承:继承是面向对象实现软件复用的重要手段,当子类继承父类之后,子类作为一种特殊的父类,将直接获得父类的属性和方法;输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]
2023-05-09 22:35:04
37
原创 5.8总结
(标识符是一个单词的时候,全部小写;标识符有多个单词组成的时候,第一个单词首字母小写,其他单词首字母大写):(标识符是一个单词的时候,首字母大写,标识符有多个单词组成的时候,每个单词的首字母大写)上面这个格式里面,只有sc是变量名,可以变,其他的都不允许变。上面这个格式里面,只有i是变量名,可以变,其他的都不可以变。标识符:就是给类 、方法、变量起的名字。Scanner类可以接收键盘输入的数字。1.由数字、字母、下划线和美元符组成。1.导包(寻找Scanner这个类)导包的动作必须出现在类定义的上面。
2023-05-08 23:36:34
45
原创 5.7总结
当用邻接表作为图的存储结构时,查找邻接点的时间复杂度为O(e),e为图中边数,深度优先搜索的时间复杂度为O(n+e);对于我本人的理解,我觉得DFS的过程就是可以用“不撞南墙不回头”,要将所有的图的顶点全部遍历完。当用邻接矩阵表示图时,查找每个顶点的邻接点的时间复杂度为O(n^2)其中n为顶点数,深度优先搜索遍历类似于树的先序遍历,是树的先序遍历推广。采用邻接矩阵表示图的深度优先搜索遍历。采用邻接表表示图的深度优先搜索遍历。深度优先搜索遍历非连通图。深度优先搜索(DFS)
2023-05-07 23:48:45
40
原创 5.4总结
4.构造邻接矩阵,依次输入每条边依附的顶点和其权值,确定两个顶点在图中的位置之后,使相应边赋予相应的权值,同时使其对称边赋予相同的权值。若要建立无向图,只用对上述算法做出两处改动:1.初始化邻接矩阵时,将边的权值全部初始化为0;2.构造邻接矩阵时,将权值w改为常量1;分析:该算法的时间复杂度为O(max(n^2,n*e));3.初始化邻接矩阵,是每个权值都化为极大值。2.依次输入点的信息并将其存入顶点表中。邻接矩阵是表示顶点之间相邻关系的矩阵。用邻接矩阵表示法表示图的存储表示。数据结构复习——邻接矩阵。
2023-05-04 21:41:53
31
原创 4.27总结
图由两个集合V和E组成,记为G=(V,E)其中V是顶点的有穷非空集合 ,E是V中顶点偶对的有穷集合,这些偶对称称为边。(1)子图:假设有两个图G=(v,E)和G'=(v',E'),如果v'包含于v且E'包含于E,则称G'为G的子图。(6)度,入度与出度:顶点v的度是指和v相关联的边的数目,入度是以顶点为头的弧的数目,出度是以顶点为尾的弧的数目。E,则称顶点v和v'互为邻接点,即v与v'邻接,边(v,v')依附于顶点v和v'或者说边与顶点相关联。无向图:若边集E(G)为无向边的集合,则称该图为无向图。
2023-04-27 21:29:44
92
原创 4.26总结
哈夫曼树是一一种二叉树,当然可以采用前面介绍过的通用存储方法,而由于哈夫曼树中没有度为1的结点,则-棵有n个叶子结点的哈夫曼树共有2n-1个结点,可以存储在一个大小为2n-1的一-维数组中。在构造哈夫曼树时,首先选择权值小的,这样保证权值大的离根较近,这样-来, 在计算树的带权路径长度时,自然会得到最小带权路径长度,这种生成算法是一种典型的贪心法。(2)在森林F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树, 且置新的二叉树的根结点的权值为其左、右子树上根结点的权值之和。这棵树便是哈夫曼树。
2023-04-26 23:56:02
40
原创 4.25学习总结
JDK:(Java开发工具包)主要包括三部分JVM(Java程序运行的地方),核心类库(Java已经写好的东西,可以直接拿来用),开发工具(javac,java,jdb,jhat等)操作:先去文件夹里面创建一个新的文本文档,重命名为HelloWorld,然后该文件拓展名txt为java,再输入代码,保存,然后点击键盘win+R进行cmd操作编译运行。特殊字符:\t 制表符:再打印的时候,把前面字符串的长度补齐到8或8的整数倍。JRE:(Java运行环境)主要包括JVM,核心类库,运行工具。
2023-04-25 23:24:36
48
原创 4.24总结
修改后 f[i+1]f[i+1] 表示把 \textit{arr}[0]arr[0] 到 \textit{arr}[i]arr[i] 这段做分隔变换后能够得到的元素最大和。在 f 数组的最左边插入一个状态,那么其余状态全部向右偏移一位,也就是 f[i]f[i] 改为 f[i+1]f[i+1],f[j-1]f[j−1] 改为 f[j]f[j]。输入:arr = [1,4,1,5,7,3,6,1,9,9,3], k = 4。输入:arr = [1,15,7,9,2,5,10], k = 3。
2023-04-24 21:46:39
41
原创 4.23总结
然后对一些功能进行了优化,比如利用二叉树来进行搜索书名从而查找整本书的功能。对自己的代码进行了整理,使自己看得更清楚,明了。还将图书录入方面进行了修改,将其直接存入文件中。还有两个文件处理的地方。
2023-04-23 22:32:41
42
原创 4.20总结
以这种节点结构构成二叉树的存储结构,叫线索链表,其中结点前驱和后继的指针,叫做线索。加上线索的二叉树称之为线索二叉树。对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化。③如果pre的右孩子为空,则给pre加上右线索,将其RTag置为1,让pre的右。今天有个函数运行的时候出错了,一直在找问题解决问题,然后简单复习了下线索二叉树。②如果p的左孩子为空,则给p加上左线索,将其LTag置为1,让p的左孩子。④将pre指向刚访问过的结点p,即pre=p。①如果p非空,左子树递归线索化。①指针p指向根结点。
2023-04-21 00:06:39
29
原创 4.18总结
今天在自己原有的线性表上增添了一个内容:图书的类别。然后对查找部分进行了增添,增加了利用类别查找图书。还实现了删除,修改,借阅,归还图书操作。
2023-04-18 22:37:08
27
原创 数据结构:树
表示二叉树的链表中的结点至少包含3个域:数据域和左、右指针域,有时为了便于找到结点的双亲还可以在结点结构中增加一个指向双亲结点的指针域,利用这两种结点的存储结构分别称为二叉链表和三叉链表。:深度为k的、有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,成为完全二叉树。(2).对任一结点,若其右分支下的子孙的最大层次为l,则其左分支下的子孙的最大层次必为l或l+1。双亲和孩子:结点的子树的根称为该结点的孩子,相应的,该结点成为孩子的双亲。结点:树中的一个独立单元。
2023-04-13 23:19:04
41
原创 数据结构:单调队列
2.检查队尾:如果队尾的元素>要添加的值,如果这个值加上去队列就不会保持单调性,所以要弹出队尾元素,对应t减一。1.检查队首:如果队首指向的下标<=i-k即队首元素已经跑出了k长度即[i-k+1,i]这个区间,那么就要将队首元素弹出来,对应将h加一。单调队列和单调栈很像,就是一个维护了单调性的队列数据结构,可以是单调递增的也可以是单调递减的。4大于队尾元素2,把2弹出,4小于8,直接将4加到8后面。注:队首指向0,队尾指向-1,默认队列里面没有元素。1.单调队列的队首和普通的队列一样,只能删除元素。
2023-04-12 22:37:08
76
原创 4.11总结
一天,一个杀人狂魔李华突然想要杀人,就把他抓来的N个英雄依次分配一个编号,第一个人的编号为1号,第二个人的编号为2号,第N个人的编号就为N号,他们按顺序围成一个环形,现在给出一个数字M,第一个人开始从1报数,第二个人报的数就是2,依次类推,报到M这个数字的人被杀了(1a秒了),紧接着从被杀了的这个人的下一个人重新开始从1报数,和上面过程类似,报到M的人被杀,直到N个人全部被杀掉,请问,这个被杀的顺序是什么?羊圈里面有三种类型的羊,分别为(),[].{},学长的羊圈和别家的羊圈不同,羊圈中也可能不只有羊。
2023-04-11 23:41:54
66
原创 数据结构与算法:单调栈
单调栈中存放的数据应该是有序的,单调栈分为。单调递减栈求左边第一个比它大的数的位置。求序列中每一个数左边第一个比它小的数。单调栈还学得有点浅,还要多学学。求左边第一个比它小的数的位置。求左边第一个比它小的数。
2023-04-10 23:52:26
95
原创 线性表的简单复习
以上讨论的链式存储结构的结点中只有-个指示直接后继的指针域,由此,从某个结点出发只能顺指针向后寻查其他结点。②从首元结点开始依次顺着链域next向下查找,只要指向当前结点的指针p不为空,并且p所指结点的数据域不等于给定值e,则循环执行以下操作: p指向下-个结点。2.若i值合理,则将第i个数据元素L.elem[i-1]赋给参数e,通过e返回第i个数据元素的传值。若查找成功,p此时指向结点的地址值,若查找失败,则p的值为NULL。1.生成新结点为头结点,用头指针L指向头结点。3.将新结点*s的数据域置为e。
2023-04-09 20:02:30
62
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人