20182303 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结

目录

  • 教材学习内容总结
  • 教材学习中的问题和解决过程
  • 代码调试中的问题和解决过程
  • 代码托管
  • 上周考试错题总结
  • 结对及互评
  • 学习进度条
  • 参考资料

教材学习内容总结

4.8.1迭代器和for循环

1. 迭代器

  • 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口Iterator接口接受(多态)
  • 使用Iterator接口中的方法hasNext()判断还没有没有下一个元素
  • 使用Iterator接口中的方法next()取出集合中的下一个元素

2. for循环的使用
用来遍历集合和数组

for (集合/数组的数据类型 变量名 : 集合名/数组名){
  System.out.println(变量名);
}

编写类

1. 类与对象

  • 类是对象的蓝图。
  • 每个类包括为该类的对象定义的属性和操作。
    • 对象的状态由与对象相关的属性定义。
    • 对象的行为由与对象相关的操作定义。
  • 类的数据和方法都称为类的成员。

2. UML类图

3. 静态类
4. 方法重载:两个或多个方法具有相同的名字。
5. 测试:测试的目的是发现错误,通过发现错误并修改它们来改进程序的质量。

教材学习中的问题和解决过程

  • 问题1:迭代器和for循环对比
  • 问题1解决方案
    效率上各有各的优势:
  1. ArrayList对随机访问比较快,而for循环中使用的get()方法,采用的即是随机访问的方法,因此在ArrayList里for循环快。
  2. LinkedList则是顺序访问比较快,Iterator中的next()方法采用的是顺序访问方法,因此在LinkedList里使用Iterator较快。
  3. 主要依据集合的数据结构不同判断。
  • 问题2static关键字会改变类中成员的访问权限吗?
  • 问题2解决方案:Java中的static关键字不会影响到变量或者方法的作用域。在Java中能够影响到访问权限的只有privatepublicprotected(包括包访问权限)这几个关键字。
  • 问题3:能通过this访问静态成员变量吗?
  • 问题3解决方案:举个栗子
public class Main {  
    static int value = 33;

    public static void main(String[] args) throws Exception{
        new Main().printValue();
    }

    private void printValue(){
        int value = 3;
        System.out.println(this.value);
    }
}

this代表当前对象,那么通过new Main()来调用printValue的话,当前对象就是通过new Main()生成的对象。而static变量是被对象所享有的,因此在printValue中的this.value的值毫无疑问是33。在printValue方法内部的value是局部变量,根本不可能与this关联,所以输出结果是33。
静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

  • 问题4:如何理解“接口”,借口存在的必要意义?
  • 问题4解答方案:接口是一组常量和抽象方法的集合(抽象方法是指没有实现的方法,即没有代码体,接口中没有实现的方法,参数列表的方法声明头后面仅跟着分号)。接口不能被实例化,类通过实现定义在接口中的每个抽象方法来实现这个接口,实现接口的类需在类声明头部使用保留字implements,再给出接口名,类中必须实现至少一个接口中的抽象方法,同时也可以定义其他方法。多个类可以实现同一个接口,一个类也可以实现多个接口。实现一个接口的类时,在接口中可以定义额外的方法。示例为一个简单的接口:
public interface Nameable
{
     public static setName(String Name);
     public String getName();
}

“接口是个规范”,这句没错。“不如直接就在这个类中写实现方法岂不是更便捷”,你怎么保证这个接口就一个类去实现呢?如果多个类去实现同一个接口,程序怎么知道他们是有关联的呢?既然不是一个类去实现,那就是有很多地方有用到,大家需要统一标准。甚至有的编程语言(Object-C)已经不把接口叫 interface,直接叫 protocol。统一标准的目的,是大家都知道这个是做什么的,但是具体不用知道具体怎么做。比如说:我知道 Comparable 这个接口是用来比较两个对象的,那么如何去比较呢?数字有数字的比较方法,字符串有字符串的比较方法,学生(自己定义的类)也有自己的比较方法。然后,在另外一个负责对象排序(不一定是数字喔)的代码里面,肯定需要将两个对象比较。这两个对象是什么类型呢?Object a,b?肯定不行,a > b 这样的语法无法通过编译。int a,b?也不行?一开始就说了,不一定是数字。....所以,Comparable 就来了。他告诉编译器,a b 两个对象都满足 Comparable 接口,也就是他们是可以进行比较的。具体怎么比较,这段程序不需要知道。所以,他需要一些具体的实现,Comparable 接口有一个方法,叫 compareTo。那么这个方法就是用来取代 <、> 这样的运算符。因为运算符是编译器保留给内置类型(整数、浮点数)进行比较用的,而不是一个广义的比较运算。如果你可以明白 JDK 自身库里面诸如 Comparable 这样已经有的接口,那么就很容易理解自己在开发程序的时候为什么需要用到接口了。

四点关于JAVA中接口存在的意义(提高方法步骤灵活性)
1、重要性:abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力;
2、简单、规范性:接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白) ;
3、维护、拓展性;
4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。

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

  • 问题1:IDEA遇到git上传问题

  • 问题1解决方案:当前目录并非远程仓库的本地目录,所以惨遭拒绝。
  • 问题2:MyDoc.java运行后出现乱码

  • 问题2解决方案:设置右下角File Encoding为GBK即可解决。
  • 问题3:int 32768转换为short是-32768?
  • 问题3解决方案:32768=(1000 0000 0000 0000)2转换成short,则最高位的1变成符号位,于是是负数,所以是补码表示的,取反+1转换为十进制:0111 1111 1111 1111 + 1 = 1000 0000 0000 0000=(32768)10。加上负号:-32768

代码托管

上周考试错题总结

  1. Say you write a program that makes use of the Random class, but you fail to include an import statement for java.util.Random (or java.util.*). What will happen when you attempt to compile and run your program.
    A .The program won‘t run, but it will compile with a warning about the missing class.
    B .The program won‘t compile-you‘ll receive a syntax error about the missing class.
    C .The program will compile, but you‘ll receive a warning about the missing class.
    D .The program will encounter a runtime error when it attempts to access any member of the Random class
    E .none of the above
    正确答案: B 我的答案: A
    解析:The missing class means that there will be undefined variables and/or methods. The compiler will detect these and will issue error messages. Your program won‘t be executable.(缺少的类意味着将有未定义的变量或方法。编译器将检测这些并发出错误消息。你的程序将无法执行。)
  2. Consider the following enumeration
    enum Speed { FAST, MEDIUM, SLOW };
    A .The ordinal value of MEDIUM is 2
    B .The ordinal value of SLOW is 1
    C .The name of the Speed enumeration whose ordinal value is zero is FAST
    D .The name of the Speed enumeration whose ordinal value is one is SLOW
    E .None of the above
    正确答案: C 我的答案: A
    解析 :Enumerations have ordinal values beginning at zero, in left-to-right ascending order. So, Speed.FAST.ordinal( ) is zero, Speed.MEDIUM.ordinal( ) is one, and Speed.SLOW.ordinal( ) is two.(枚举的序数值从零开始,按从左到右的升序排列。所以,speed.fast.ordinal()为0,speed.medium.ordinal()为1,speed.slow.ordinal()为2。)
  3. If you need to import not only the top-level of a package, but all its secondary levels as well, you should write: import package.*.*;
    A .true
    B .false
    正确答案: B 我的答案: A
    解析: import语句只能与单个*(通配符)一起使用。如果还需要导入包的所有二级,则必须显式写出它们:
    import package.A.*;
    import package.B.*;
  4. An example of passing message to a String where the message has a String parameter would occur in which of the following messages?
    A .length
    B .substring
    C .equals
    D .toUpperCase
    E .none of the above, it is not possible to pass a String as a parameter in a message to a String
    正确答案: C 我的答案: B
    解析: length和touppercase消息没有参数,substring有两个int参数。对于equals,必须将字符串作为参数传递,以便将接收消息的字符串与作为参数传递的字符串进行比较。
  5. In a UML diagram for a class
    A .classes are represented as rectangles
    B .there may be a section containing the name of the class
    C .there may be a section containing the attributes (data) of the class
    D .there may be a section containing the methods of the class
    E .all of the above
    正确答案: E 我的答案: A
    解析: Those four attributes correctly describe a UML representation of a class.

结对及互评

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 254/254 2/2 21/21 开始编写简单的程序
第二周 132/386 1/3 26/47 学会使用Scanner类
第三周 632/1018 2/5 21/68 学会使用部分常用类
第四周 663/1681 2/7 27/95 junit测试和编写类
  • 计划学习时间:20小时
  • 实际学习时间:27小时

参考资料

深入理解迭代器
static理解

原文地址:https://www.cnblogs.com/zdyyy/p/11614162.html

时间: 2024-07-30 03:21:55

20182303 2019-2020-1 《数据结构与面向对象程序设计》第4周学习总结的相关文章

《数据结构与面向对象程序设计》第四周学习总结

20182304 2019-2020-1 <数据结构与面向对象程序设计>第四周学习总结 教材学习内容总结 1.本章我们学习了使用并编写我们自己的类:类中有与类同名的构造方法,也可以有set,get,toSring与自己定义的方法.实例化一个对象,可通过该对象使用类里的所有方法.实例数据是每次创造一个实例后自动生成新的内存空间的变量 2.uml类图 :每个类可能包含三部分内容:类名.属性.操作(方法).UML类图有属于自己的语法,变量的类型名在变量名的后面,它们之间用冒号作为分隔符,方法的+和-

20182306 2019-2020-1 《数据结构与面向对象程序设计》第五学习总结

20182306 2019-2020-1 <数据结构与面向对象程序设计>第五学习总结 教材学习内容总结 尽量简单的总结一下本周学习内容 尽量不要抄书,浪费时间 看懂就过,看不懂,学习有心得的记一下 教材学习中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码调试中的问题和解决过程 问题1:XXXXXX 问题1解决方案:XXXXXX 问题2:XXXXXX 问题2解决方案:XXXXXX ... 代码托管 (stat

20182322 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.编写类与方法(构造方法的结构和用途) 2.实际参数与形式参数.public与private.return与void的区别与含义. 3.UML类图的含义与形式 4.静态类(Math类)静态变量.静态方法 5.类间关系(依赖关系.聚合关系.继承关系) 6.接口的使用,能够在某个类中实现接口的方法(Comparable.Iterator) 7.软件活动开发.方法设计.方法重载.测试(黑盒测试.白盒测试) 教材学习中的问题和解决过程 问题1:toString与return返回的值的

20182335 2019-2020-1 《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结 1.继承的基本语法与用法. 2.利用UML类图表示继承关系. 3.在具体编写类的时候,先是数据声明再是方法声明. 4.toString方法用println或print或字符串连接会自动调用. 5.每创建一个对象.都会为类中声明的变量建立新的内存空间. 6.UML图一些基础使用方法. 7.对象应该是自管理的,既对象的实例数据应该仅由该对象来修改,这就构成了封装. 代码调试中的问题和解决过程 问题1:测试代码出现错误 问题1解决方案:junit的方法名必须是textxxx或xxxt

20182303 2019-2020-1 《数据结构与面向对象程序设计》实验3报告

20182303 2019-2020-1 <数据结构与面向对象程序设计>实验3报告 课程:<程序设计与数据结构> 班级: 1823 姓名:张端云 学号:20182303 实验教师:王志强 实验日期:2019年10月23日 必修/选修: 必修 1.实验内容 下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html). 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态(自学) 初步掌握UML建模

20182303 2019-2020-1 《数据结构与面向对象程序设计》实验9报告

20182303 2019-2020-1 <数据结构与面向对象程序设计>实验9报告 课程:<程序设计与数据结构> 班级: 1823 姓名:张端云 学号:20182303 实验教师:王志强 实验日期:2019年12月2日 必修/选修: 必修 1.实验内容 图的综合实践 (1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数.边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分) (2)

20182327 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182327 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名:赵天昊 学号:20182327 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证. 2. 实验过程及结果 不多说,上

20182319《数据结构与面向对象程序设计》实验二报告

20182319 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 彭淼迪 学号:20182319 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,用规定方法测试验证. 2. 实验过程及结果

# 20182331 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182331 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 高宽让 学号:20182331 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 (1) 编写简单的计算器,完成加减乘除模运算. (2) 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. (3) 编写测试代码,测试验证.(https://www.cnb

20182330 2019-2020-1 《数据结构与面向对象程序设计》实验二报告

20182330 2019-2020-1 <数据结构与面向对象程序设计>实验二报告 课程:<程序设计与数据结构> 班级: 1823 姓名: 魏冰妍 学号:20182330 实验教师:王志强 实验日期:2019年9月16日 必修/选修: 必修 1.实验内容 编写简单的计算器,完成加减乘除模运算. 要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出. 编写测试代码,测试验证. 2. 实验过程及结果 编写简单计算器,借鉴c语言语法