20165220 Java第六周学习总结

教材学习内容总结

  • 正则表达式:正则表达式是一个String对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符。
  • 链表:由若干个称作结点的对象组成的一种数据结构,用于动态的减少或增加数据项。
  • String类是final类,也即意味着String类不能被继承,并且它的成员方法都默认为final方法。在Java中,被final修饰的类是不允许被继承的,并且该类中的成员方法都默认为final方法。
  • String对象:可以使用String类声明对象并创建对象,例如:String s = new String("we are students");
    String t = new String("we are students");
  • 堆栈对象的创建以及压栈、弹栈的操作等
  • 链表:由若干个称作结点的对象组成的一种数据结构,用于动态的减少或增加数据项。
  • 获取堆栈顶端的数据,但不删除该数据: public int search(Object data);
  • 使用String类调用format方法对数字进行格式化;
  • 使用Date及Calendar处理和日期、时间相关的数据;
  • 泛型(Generics),其主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。
    可以使用“class 名称<泛型列表>”声明一个类,为了和普通的类有所区别,这样声明的类称作泛型类,如:
    class People其中People是泛型类的名称,E是其中的泛型,也就是说我们并没有指定E是何种类型的数据,它可以是任何对象或接口,但不能是基本类型数据。
  • java.lang.String类使用了final修饰,不能被继承。Java程序中的所有字面值,即双引号括起的字符串,如"abc",都是作为String类的实例实现的。String是常量,其对象一旦构造就不能再被改变。换句话说,String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创造了一个全新的String对象,以包含修改后的字符串内容。而最初的String对象则丝毫未动。String对象具有只读特性,指向它的任何引用都不可能改变它的值,因此,也不会对其他的引用有什么影响。但是字符串引用可以重新赋值。java字符串在内存中采用unicode编码方式,任何一个字符对应两个字节的定长编码,即任何一个字符(无论中文还是英文)都算一个字符长度,占用两个字节。
  • 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。Java为了提高性能,静态字符串(字面量/常量/常量连接的结果)在常量池中创建,并尽量使用同一个对象,重用静态字符串。对于重复出现的字符串直接量,JVM会首先在常量池中查找,如果常量池中存在即返回该对象。
  • String、StringBuffer和StringBuilder的区别

    1.对象的可变与不可变

      String类中使用字符数组来保存数据,因为有“final”修饰符,所以string对象是不可变的。如下:

    private final char value[];

      StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存数据,这两种对象都是可变的。如下:

        char[] value;

    2.是否是线程安全

      String中的对象是不可变的,也就可以理解为常量,所以是线程安全

      AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。

      StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的

    3.StringBuilder与StringBuffer共同点

      StringBuilder与StringBuffer有公共的抽象父类AbstractStringBuilder。

      抽象类与接口的一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

      StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

    如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

     

代码调试中的问题和解决过程

在编译的时候出现了这个错误提示;

解答:检查了代码没有任何问题出现,参考之前发生过的错误,我首先分析了原因,这应该是需要多个文件共同编译导致的。随后我查阅资料并询问同学,找到了一种办法,就是将相关的文件加以相同的前缀,然后统一编译、运行。就比如E9_1 E9_2 E9_3,然后用命令javac E9*.java来进行编译运行。虽然使得类名没意义,但是能解决问题。可以在此基础上再寻求更好的解决方案。

代码托管

上周考试错题总结

错题1:

父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override.

A.true
B.false
解析:子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。这里是重载.

错题2:
下列关于abstract关键字的说法,正确的是
A.可以使用static修饰abstract方法。
B.非abstract类中不可以有abstract方法。
C.不能使用new创建abstract类的对象。
D.不允许使用final和abstract同时修饰一个方法.
E.可以使用public abstract void eat(){};来声明抽象方法eat()。
F.抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
解析:5.9节。A项:abstract关键字不能应用于static、private或final 方法。E项:不能有方法体。

感悟:

这周的内容比前两周明显多了不少,而且是过去没有接触过的新知识和新概念,理解起来需要一定的时间,编写代码也要一步一步地努力提高。我对这些新知识现在还掌握得不够熟练,希望多花时间敲代码后能够熟练应用。我觉得课前预习是非常有必要的,如果不及时掌握那么会被落下很多很多,跟着大部队一起前进才是最好的,结对学习也初次体验了乐趣,相信以后会越来越好!

参考资料

《Java学习笔记(第8版)》学习指导

原文地址:https://www.cnblogs.com/brs6666/p/8733548.html

时间: 2024-08-02 20:29:10

20165220 Java第六周学习总结的相关文章

java第六周学习总结

学号20145336 <Java程序设计>第五周学习总结 教材学习内容总结 第十章 输入与输出 InputStream与OutputStream java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象.从程序角度来看,如果将数据从来源中取出,可以使用输入串流,如果将数据写入目的地可以使用输出串流.在java中,输入串流对象为java.io.InputStream实例,输出串流对象为java.io.OutputStream实例.流(Stream)是对「输入输出」的抽象,注意「

20165318 2017-2018-2 《Java程序设计》第六周学习总结

20165318 2017-2018-2 <Java程序设计>第六周学习总结 教材内容学习总结 第八章 常用实用类 1.String类 String类用来处理字符序列,在java.lang包中,程序可以直接使用String类.需要注意的是Java把String类声明为final类,因此用户不能扩展String类,即String类不可以有子类. 常量对象:字符串常量对象是用双引号括起的字符序列,例如:"你好"."12.97"."boy"

2017-2018-2学期 20172324《Java程序设计》第六周学习总结

20172324<Java程序设计>第六周学习总结 教材学习内容总结 如何创建数组以及int[] X与int X[]的区别(编译时是没有差别的,只是前者与其他类型的声明方式有一致性) 每一个java数组都是一个迭代器. 数组是作为参数传递给一个方法的,实际上传递的是原始数组引用的副本. 对象数组(基本数据类型+对象) 二维数组中前一个索引值代表行,另一个索引值代表列. 可变长度参数用... 教材学习中的问题和解决过程 问题1: Family代码中String...name中的...是什么意思.

杨其菊201771010134《面向对象程序设计(java)》第六周学习总结

<面向对象程序设计(java)>第六周学习总结 第一部分:理论知识 1)类.超类和子类2)Object:所有类的超类 3)泛型数组列表4)对象包装器和自动打包 5)参数数量可变的方法 6)枚举类7)继承设计的技巧 第二部分:实验部分 继承定义与使用<代码测试和示例程序的注释> 1.实验目的与要求 (1) 理解继承的定义: (2) 掌握子类的定义要求 (3) 掌握多态性的概念及用法: (4) 掌握抽象类的定义及用途://不能创建自己的对象,特殊类 (5) 掌握类中4个成员访问权限修饰

杨玲 201771010133《面向对象程序设计(java)》第六周学习总结

杨玲 201771010133<面向对象程序设计(java)>第六周学习总结 第一部分:理论知识学习部分 1.继承 用已有类来构建新类的一种机制.新类可以继承父类的方法和域,同时可以在新类中添加新的方法和域. 已有类称为:超类.基类或父类.新类称作:子类.派生类或孩子类. 子类的构造器不能直接访问超类的私有域,必须通过调用超类构造器,而且必须是第一条语句.子类不能直接访问超类的私有域,必须和其它方法一样,使用公有接口. 在子类中可以增加域.增加方法或覆盖超类的方法,但绝对不能删除超类的任何域和

20172328 2018-2019《Java软件结构与数据结构》第六周学习总结

20172328 2018-2019<Java软件结构与数据结构>第六周学习总结 概述 Generalization 本周学习了第十章:非线性集合与数据结构--树.主要讨论了树的使用和实现,以及考察实现和使用树的实例. 教材学习内容总结 A summary of textbook 树(tree):树是一种非线性结构,其元素被组织成了一个层次结构.下面是树的术语,了解一下吧! 树有一个包含结点(node)和边(edge)的集构成,其中的元素被储存在这些结点中,边则将一个结点和另一个结点连接起来.

张季跃 201771010139《面向对象程序设计(java)》第十六周学习总结

张季跃 201771010139<面向对象程序设计(java)>第十六周学习总结 1.实验目的与要求 (1) 掌握线程概念: (2) 掌握线程创建的两种技术: (3) 理解和掌握线程的优先级属性及调度方法: (4) 掌握线程同步的概念及实现技术: 2.实验内容和步骤 实验1:测试程序并进行代码注释. 测试程序1: l 在elipse IDE中调试运行ThreadTest,结合程序运行结果理解程序: l 掌握线程概念: l 掌握用Thread的扩展类实现线程的方法: l 利用Runnable接口

20175202 《Java程序设计》第六周学习总结

20175202 2018-2019-2 <Java程序设计>第六周学习总结 教材知识点总结 1.内部类: Java支持在一个类中定义另一个类,称作内部类,包含内部类的类叫做外嵌类. 内部类的外嵌类的成员变量在内部类中仍然有效,内部类也可以调用其方法. 内部类的类体中不能声明变量和方法. 内部类仅供其外嵌类使用. 2.匿名类: 匿名类可以继承和重写父类的方法,且匿名类一定是内部类. 匿名类可以访问外嵌类的变量和方法,匿名类的类体不能声明static变量和方法. 创建对象时,必须使用父类的构造方

学号 20175329 2018-2019-3《Java程序设计》第六周学习总结

学号 20175329 2018-2019-3<Java程序设计>第六周学习总结 教材学习内容 第七章 内部类与异常类 内部类与外嵌类之间的重要关系如下: 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法. 内部类的类体中不可以声明类变量和类方法.外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员. 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象. 2.匿名类 匿名类可以继承父类的方法也可以重写父类的方法. 使用匿名类时,必然是在某个类中直接