前言
本学期的java终于将告一段落,过程一言难尽。
笔记
封装:将属性私有化,通过setter()和getter()方法来访问属性,目的是为了增强安全性,通过外部接口访问类的成员。
继承:将多个相同的方法、属性提取出来,新建了一个父类,但是一个类只能继续一个父类,且只能继承访问权限为非private的属性和方法,通过继承,子类就可以重写父类的方法,继承可以提高代码的复用性,比如每个图形都有颜色属性,需要定义颜色的方法,就可以通过继承父类,再通过方法重写来实现需求。
多态:可以说是同一个事件发生在不同对象上产生的不同结果,多态是以继承为基础,还需有重写以及父类引用指向子类对象,使用多态方式的时候要先检查父类中是否有该方法,没有的话会有编译错误,有的话才能调用子类的同名方法。多态的实现方式有重写、接口、抽象类和抽象方法;使用多态的好处就是使程序的扩展性更好。
重写与重载:重写就是在子类中把父类能访问的方法再重写一遍,其中方法名、参数列表、返回类型都要相同,对方法体进行重写(子类函数的访问修饰权限不能少于父类的)。重载就是在同一个类中,同名的方法有着不同的参数列表(参数类型不同、参数个数不同或者是顺序不一样)对返回类型没有要求,特殊的有构造方法。
final关键字:可以用来修饰类、方法和变量;当修饰类的时候,这个类不能被继承;对于final变量,如果是基本数据类型的变量,则其数值一旦初始化后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
接口(interface):是抽象方法的集合,一个类可以通过接口的方式,来继承接口的抽象方法。但是接口并不是类,类描述的是对象的属性和方法,接口则包含类要实现的方法。接口与抽象类也有区别,抽象类的方法可以有方法体,但是接口不行,并且一个类只能继承一个抽象类,但是可以继承多个接口。
CompareTo()方法:我们可以通过实现接口Comparable并重写CompareTo() 方法来自定义排序,然后再调用Array的sort方法,即可进行自定义排序。如果指定数与参数相等则返回0,指定数小则返回-1,反之返回1。
List:实例化主要有Array List集合、Linked List集合,List接口的方法有很多,如指定位添加、删除元素或者更换元素。
泛型:限定数据类型,当在集合或者其他的地方使用时,只能给其传递和数据类型匹配的类型,不然会报错。
正则表达式:可以用pattern、matcher类
JAVAFx:JDK11以上的版本都要另外下载Java Fx,其中的Scene.shape包含一些用来绘画的类,比如Circle,Line等,允许指定颜色来填充图形。
Lambda 表达式:允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用 Lambda 表达式可以使代码变的更加简洁紧凑。
例如:
// 1. 不需要参数,返回值为 5 () -> 5
// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y
// 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
总结
作业除了一次数据个人觉得应该是出锅了之外,没有太大的问题,对于一门语言的入门也有着一定的作用。动手能力才是最关键的,没有什么是多练学不到的,实在不行就多练几遍。作业的难度也不一而从,但是他们都有着一个共同的特点就是一定要加上数据出错的判断,这无疑提升了一些代码构造上的难度,如果要加上hack的话这无疑会变得非常有趣,可是人生总是不能如意的。期望下一届的学弟们能享受到hack室友的快乐。
面向过程主要在乎的是完成程序最终的结果。面向对象就是将最终结果拆成若干个部分,完善各个部分的内容,实现的部分还具有复用性的特征。两者只是在目的上有所区别,有句话说的好条条道路通罗马,各走各的路只是各自有各自的特长。在比赛中很少能看到什么单一原则之类的东西,用最少的时间最小的代价解决问题才是最好办法,但是着眼于大型的项目中,再像之前的那样可能维护起来就能让人头秃。
回忆一下学到了什么东西,最重要的还是思想,具体的什么函数方法类都只是为了学到思想的媒介,面向对象逐渐成为主角不是没有道理的,可视化的将要实现的目的分解成多个部分,极大地简化了实现的难度。多学多练多看,我们的未来不可限量。
建议
强烈建议加入hack机制(可以查看别人的代码,寻找其漏洞,构造出其代码无法正确输出的数据),这既可以提高代码的阅读能力,还可以训练数据的构造能力,最终提升个人对于算法构造的思想。这还可以简化老师的工作量,只需要提供几组简单的数据,剩下的特殊数据靠同学们的发掘。
还有就是pta题面总是要花挺久时间才能读懂题意,建议出题的时候能尽量体谅一下阅读水平低的同学(卑微),生动形象的代价就是要花大量的时间去体会他的意境,建议能用几句简单的话列出题目要求,虽然不够美观但是可以节约双方的时间,使大家的效率最大化。