暂时未有相关云产品技术能力~
暂无个人介绍
在定义完GameJFrame、LoginJFrame和RegisterJFrame方法后,如果要调用该方法内的成员变量,要使用this关键字,而不是像在测试类中新建对象后直接调用新的对象,这样的话由于我们调用的方法是不含参数的,如果new了一个对象会被放到堆内存中,数据也在堆内存中,所以无法访问到
上一次我们说了抽象方法的存在是因为父类可以抽取子类中的共性方法,但是共性方法内实现方法不同所以要将共性方法写成抽象方法,那么如果子类中有一个“另类”不需要这个方法的话,我们就无法使用抽象方法了,而是要使用接口,哪个子类需要用,就继承该接口
抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现
在子类中如果要继承接口要用implements,继承父类要用extends,不可混淆,并且在继承以后都要重写方法,否则会报错
由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可
要删除的元素最终为慢指针指向的元素的下一个节点(链表特有的,下文会提到),而当慢指针指的下一个节点向要删除的元素时,快指针的下一个节点恰好指向null(终止条件)
14天刷爆LeetCode算法学习计划——Day05 快慢指针(1)
14天刷爆LeetCode算法学习计划——Day04 双指针(2)
14天刷爆LeetCode算法学习计划——Day04 双指针(1)
14天刷爆LeetCode算法学习计划——Day03 双指针(1)
k %= n一定要写,不然当 k=nums.length 时就会出现运行结果错误的情况,读者朋友可以自己在力扣网上试验一下
如果我们规定整数的最大值只能是100的话,如果有个老六偏要设数组头和尾的值都是99的话,99+99=198 > 100,芭比Q了,这不就没办法运行程序了嘛,所以为了避免出现这种错误,只能用减法,由于数组的下标值是依次递增的,要想知道他的一半是多少的话,直接拿最大值-最小值的差除以2再加上最小值(一秒回到小学),即 mid = left + (right - left) / 2
在上面举例的代码中,brand , colour两个变量是没用访问修饰符的,但是可以在同一个包的测试类中使用是不会报错的,但是如果使用别的包中的类就会报错
当遇到的元素nums[i]之前的连续数组和的最大值dp[i-1]为负数时,则不要将现在的这个数加到dp[i-1]上,因为不知道现在的这个数nums[i]是正还是负,如果盲目加上,只会无法判断其最大子数组的和,故 dp[i-1] < 0时,dp[i] = nums[i]
为了防止dp数组内元素在循环中被覆盖,所以此处设为整型最大值Integer.MAX_VALUE*,而如果金额为0的话,硬币数量也为0,即dp[0] = 0
包在操作系统中其实就是一个文件夹。包是用来分门别类的管理技术,不同的技术类放在不同的包下,方便管理和维护
在实现 “整数组中最大子数组的和” 的题目时,要将Java程序转换为可执行的exe文件时遇到了一系列初学者都会遇到的问题,在此详细罗列问题及其解决方案
绝大部分同学都已经做出来了单维数组的 求数组中最大子数组的和, 但是你不妨试一试:把你的程序编译为可执行文件, 然后执行 例如 maxsum.exe 输出就是最大子数组的和, 上面的例子就应该输出 16.
双向链表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。链表的头结点的数据域不存储数据,指向前驱结点的指针域值为null,指向后继结点的指针域指向第一个真正存储数据的结点
多态本身是子类类型向父类类型向上转换(自动转换)的过程,这个过程是默认的。当父类引用指向一个子类对象时,便是向上转型。
在编程语言和类型论中,多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。多态类型(polymorphic type)可以将自身所支持的操作套用到其它类型的值上。计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。
单链表的反转就是从原链表的第一个存 数据的结点开始,依次递归调用反转每一个结点,直到把最后一个结点反转完毕
分块查找是折半查找(二分查找)和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。分块查找的速度虽然不如折半查找算法,但比顺序查找算法快得多,同时又不需要对全部节点进行排序
继承可以让类和类之间产生父子关系。要注意的是两个类之间一定要有共同内容或者共性内容,且是父类的一种(如老师和学生都归属于人这个大类)
链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
无static修饰的成员变量或者成员方法,称为实例变量,实例方法,实例变量和实例方法必须创建类的对象,然后通过对象来访问,且必须用对象来调用
基础SQL——DDL
对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理
算法排序5——归并排序&分治思想
依次比较待插入元素 i 和分组内另一个元素,就需要用到for循环语句;当h = 5 时,a[5]恰好是数组内第6个元素,也就是第一个待插入的元素,所以初始条件是 i = h,待插入的最后一个元素就是数组内最后一个元素,即终止条件为 i < a.length
当录入的学号已经存在时,我们就要提示用户重新输入,直至不重复为止,这时候我们就需要重新定义一个方法来判断学号是否重复
Java中的集合1——ArrayList
算法排序3——选择排序
Java面向对象基础5——String类(2)
String类的本质是字符数组,是Java中的文本数据类型。字符串常量是用双引号括起来的内容,Java中所有字符串字面值都作为此类的实例实现
要比较的每一对元素是相邻的,从下标为0开始,到最后一个元素,如果下标设为 j,则相邻元素下标值为 j +1,搜索到最后一个元素:j+1<a.length,而 a.length - 1 = i ;所以终止条件是 j < i
算法基础学习1——时间复杂度和空间复杂度
Java面向对象基础4——内存图
Java面向对象基础3——构造方法及this关键字
在写一个标准的JavaBean时,往往要包含定义成员变量、构造空参函数、构造带参函数、构造set和get方法。当变量很多时如果要一个个编写这些的话耗时太久,本文将介绍几个小技巧,在最后分享一个一秒生成JavaBean类的小插件
简单来说,封装就是正确地设计对象的属性。要注意的是,对象代表什么,就封装对应的数据,并提供数据的对应行为
求数组内最大值以及定义一个随机数组在之前已经介绍过了,只需要将这部分的代码打包放在一个方法内,并在main方法中调用即可
赋值调用的好处是当程序复杂时,若想调用某个方法的结果,就可以直接用一个变量来代替,便于代码的编写。同样,在将方法的结果赋值给变量后,不打印输出该变量,控制台输出也为空
Java练习题——数组
Java基础学习——数组
给你一个整数x,如果x是一个回文数,打印true,否则,返回false。(注:回文数是指正序和倒序读都是一样的整数。列如,121是回文数,1231不是)
Java练习题——运算符
在运算时,不同数据类型之间无法进行运算,需要将数据类型转化为同一种数据类型才能进行运算。而数据类型的转换也分为隐式转换(自动转换)和强制类型转换,要想知道何时需要我们强制转换数据类型,必须首先知道数据类型的种类