周学习总结
这周继续学习了Java的知识点,还写了考查递归、递推与贪心的算法题。
算法小结
递归与递推一般是观察观察题干,分析题目的规律,可能还会用到分治算法,推导出一个合理的表达式,再使用函数递归来进行求解。
贪心在求解时,一步步寻找当下的最优解,而非全部的最优解(目光短浅)。
Java知识小结
多态
多态是同种类型对象的不同表现形式
表现形式一般为:父类类型 对象名称 = 子类类型
多态的前提:
1.有继承关系
2.有父类对象引用指向子类对象
3.有方法重写
多态调用成员的特点
变量调用:编译看左边,运行也看左边
即先在父类中寻找看有没有这个变量,没有就报错,有的话就使用父类中的变量
方法调用:编译看左边,运行也看右边
即先在父类中寻找看有没有这个方法,没有就报错,有的话就使用子类中的方法
如果一个方法要接收很多种子类对象,就可以将其父类类型作为形参,用多态来进行接收。
但是多态也有弊端,不能使用子类的特有功能
我们可以通过自动类型转换和强制类型转换,将父类类型转换为真正的子类类型,从而调用子类的独有功能。
包
包就是文件夹,用来管理不同功能的Java类
一般采用公司域名反写+包的作用来对包命名,需要注意包的名字要全部英文小写,见名知意。
使用同一个包和java.long中的类时,不需要导包,其他情况都需要导包,如果同时使用两个包中的同名类,则需要使用全名类,对同名类加以区分。
final
final修饰的方法为最终方法,不可以重写,
final修饰的类为最终类,不可以被继承,
final修饰的变量为最终变量,不可以被修改。
基本数据类型:变量的值不能被修改,
引用数据类型:地址值不能修改,内部的属性值可以修改
权限修饰符
权限修饰符:是用来控制一个成员能够被访问的范围的。
可以修饰成员变量,方法,构造方法,内部类。
作用范围由小到大依次为:
private<空着不写<protected<public
private只能被同一个类中的访问
空着不写的能被同一个包中的其他类访问
protected能被不同包下的子类访问
publi可以被不同包下的无关类访问
抽象类和抽象方法
如果抽取共性时无法确定方法体,就可以把方法定义为抽象的,强制让子类按照某种格式重写。
抽象方法所在的类必须是抽象类,而抽象类中不一定有抽象方法。
抽象类没有方法体
继承抽象类时要么重写抽象类中的所有抽象方法,要么子类也是抽象类
接口
接口是一种规则,是对行为的抽象,不能实例化。
接口中的成员的特点
成员变量只能是常量
没有构造方法
成员方法可以是抽象方法、有方法体的方法和私有方法
接口和类是实现关系,用implements关键字表示,可以是单实现,也可以是多实现。
内部类
内部类是写在一个类里面的类,对于哪些本身是别的类中的一部分,但单独存在没有意义的类,就可以用内部类来表示,分为成员内部类,静态内部类,局部内部类,匿名内部类四种。
成员内部类;写在成员位置,属于外部类的成员
静态内部类:是一种特殊的成员内部类,用static关键字修饰
局部内部类:是定义在方法中的内部类,类似于方法里面的局部变量,无法在外界直接调用。
匿名内部类:是隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置
如果实现类只要使用一次,就可以用匿名内部类来进行简化
图形化界面
JFrame:最外层的窗体
JMenuBar:最上层的菜单
JLabel:管理文字和图片的容器
菜单创建:先创建JMenuBar,再创建JMenu和JMenuItem,再把JMenuItem放进JMenu里,最后把JMenu放进JMenuBar里。
添加图片需要注意先添加的图片在上面,后添加的图片在下面
事件
让类实现对应接口,实现监听
分为鼠标监听,键盘监听和动作监听
当事件被触发后,就会执行本类中的对应代码
API
math
是一个可以帮助我们用于数学计算的工具类
私有化构造方法,所有方法都是静态的
System
也是一个工具类,提供了一些与系统相关的方法
可以对数组进行拷贝;计算程序的运行时间来判断效率;退出虚拟机
Object
是一个工具类,提供了一些方法去完成一些功能,如判断对象是否为空
BigInteger
可以处理很大,以至于超出long的范围的数。
可以获取随机大整数,获取指定大整数,获取指定进制大整数
BIgDecima
用于小数的精确运算
用来表示很大的小数
在Java中小数的运算容易失真,就可以用BIgDecima来对小数进行运算
正则表达式
用来校验字符串是否满足一定的规则,并用来校验数据格式的合法性
\:转义字符,改变后面那个字原本的含义
用两个\\表示一个\,我的理解是,在Java中\也有特殊含义,所以需要用两个\\来表示一个\,前者是对后面的\进行转义,后者才能对其后面的那个字进行转义(不知道对不对)。