Java课程感想

前言

   Java课程即将结束,在课程开始之前就比较焦虑,因为个人的编程能力着实是比较差(又听闻大作业的难度),在之前学C以及数据结构的时候,遇到问题就基本直接想放弃,但是可能比较适应老师线上的教学方式,老师上课讲的比较细,然后再加上发布的视频,感觉比之前学C的时候要好那么一点,作业遇到问题也愿意花时间去解决(Java是所有课程里面花时间最多的一门课)。以下就从这个学期Java课程所学知识点、作业等方面做课程感想。

知识点感想

   面向对象的三大特性:封装继承多态

   封装:将属性私有化,通过setter()和getter()方法来访问属性,目的是为了增强安全性,通过外部接口访问类的成员。

   继承:将多个相同的方法、属性提取出来,新建了一个父类,但是一个类只能继续一个父类,且只能继承访问权限为非private的属性和方法,通过继承,子类就可以重写父类的方法,继承可以提高代码的复用性,比如在求不同图形面积的时候,因为各图形面积周长等计算方法不一样,就可以通过继承父类,再通过方法重写来实现需求。

   多态:可以说是同一个事件发生在不同对象上产生的不同结果,多态是以继承为基础,还需有重写以及父类引用指向子类对象,使用多态方式的时候要先检查父类中是否有该方法,没有的话会有编译错误,有的话才能调用子类的同名方法。多态的实现方式有重写、接口、抽象类和抽象方法;使用多态的好处就是使 程序的扩展性更好。

   重写与重载:重写就是在子类中把父类能访问的方法再重写一遍,其中方法名、参数列表、返回类型都要相同,对方法体进行重写(子类函数的访问修饰权限不能少于父类的)。重载就是在同一个类中,同名的方法有着不同的参数列表(参数类型不同、参数个数不同或者是顺序不一样)对返回类型没有要求,特殊的有构造方法。

   final关键字:可以用来修饰类、方法和变量;当修饰类的时候,这个类不能被继承;对于final变量,如果是基本数据类型的变量,则其数值一旦初始化后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

   接口(interface):是抽象方法的集合,一个类可以通过接口的方式,来继承接口的抽象方法。但是接口并不是类,类描述的是对象的属性和方法,接口则包含类要实现的方法。接口与抽象类也有区别,抽象类的方法可以有方法体,但是接口不行,并且一个类只能继承一个抽象类,但是可以继承多个接口。

   CompareTo()方法:我们可以通过实现接口Comparable并重写CompareTo() 方法来自定义排序,然后再调用Array的sort方法,即可进行自定义排序。如果指定数与参数相等则返回0,指定数小则返回-1,反之返回1。

   List:实例化主要有Array List集合、Linked List集合,List接口的方法有很多,如指定位添加、删除元素或者更换元素。

   泛型:限定数据类型,当在集合或者其他的地方使用时,只能给其传递和数据类型匹配的类型,不然会报错。

   Junit测试:需要先导入jar包,使用单元测试绿条代表通过,红色则是失败(这个没怎么使用,一般都是用main)

   工具类:日期类-Date、Local Date等

        // 获取当前日期(年-月-日)

          LocalDate time = LocalDate.now();

        // 将日期转换成字符串类型

          String str = time.toString(); System.out.println(str);

        // 设置日期 of(年份, 月份, 月中的天数)

          LocalDate of = LocalDate.of(2020, 10, 1); System.out.println(of);

        // 获取年

          System.out.println(time.getYear());

       // 获取月

          System.out.println(time.getMonth());

       // 获取当前月的天数

          System.out.println(time.getDayOfMonth());

       // 获取一年中的天数

          System.out.println(time.getDayOfYear());

       // 获取当天星期几

          System.out.println(time.getDayOfWeek();

   正则表达式:可以用pattern、matcher类

          \n 换行符

         [abc] a、b或c

         [^abc]任何字符,除了abc

         \.任何字符

         \d 数字0-9

         \D 非数字

         ^行的开头

         $行的结尾

         X?一次或一次都没有

   JAVAFx:JDK11以上的版本都要另外下载Java Fx,其中的Scene.shape包含一些用来绘画的类,比如Circle,Line等,允许指定颜色来填充图形。

作业感想

   PTA三个阶段的作业,总共发布了八次,循序渐进的作业难度也有增加,第一阶段的前几次作业基本上都是对一些语句的应用,没有接触到类与对象的概念,相比之下还是面向过程的思想,为了解决某个问题,后面慢慢的就比较复杂,有了面向对象的概念,在老师给的类图帮助下,找到思路。水文校验、表达式求导用到了正则表达式,因为包含的情况很多,想的不全面,就一个一个测试点去试,然后找到错误之后,再去改代码,也请教了同学。在做作业过程中,有些需要用到的知识点,老师上课可能没有涉及到,就会去网上查阅相关的知识点,这也是学习过程中的收获之一,以前可能遇到问题就想着直接放弃,想着自己肯定不会,然后请教同学,但是这个学期在Java这门课上花的时间比较多,会愿意自己去尝试解决一些问题,然后PTA上的作业也认真尽量的完成(除了一些实在改不出来的就放弃了)。再靠后的作业就没有给类图了,有关的对象,方法都需要自己去思考,相比之前就会更难一些。每次一阶段结束后还有相应的博客作业进行总结,但是可能时间相距有点长,总结的时候,当时写的时候遇到的很多问题,有些都记不得了。相比之前学C还有数据结构的时候,感觉JAVA学的比较认真(每解决一个问题都会有成就感,就算是发现那种比较简单的错误),可能比较喜欢老师线上上课的模式,老师讲的比较细,然后进度快慢也🆗,看着老师边讲边敲代码做例子就更容易理解。每节课过后呢,还有相应的课堂作业。除此之外,慕课上也会布置一些作业。

   最后,尽管Java课程结束了,但是学习依然继续,望努力,有收获,有进步。

posted @ 2020-06-01 15:05  cici妹妹  阅读(301)  评论(0编辑  收藏  举报