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

教材学习内容总结

第四章

4.1 编程语言的几个发展阶段

面向对象编程主要体现下列三个特性:

  • 封装性
  • 继承
  • 多态

4.2 类

  • 类的目的是抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。
  • 类体的内容由下述两个部分组成
    • 变量的声明:用来存储属性的值
    • 方法的定义:方法可以对类中声明的变量进行操作
  • 成员变量作用于整个类,其有效性与它在中的位置无关;局部变量只在方法中有效,而且从它声明的位置开始有效,有效范围是该复合语句。
  • 如果局部变量的名字与成员变量的名字像同,则成员变量被隐藏。若要使用被隐藏的成员变量,使用this关键字。
  • 局部变量没有默认值
  • 所有对成员变量的操作必须放在方法中

4.3 构造方法与对象的创建

  • 如果没有编写构造方法,系统会提供默认构造方法。
  • 构造方法没有类型

4.4 类与程序的基本结构

  • Java应用程序从主类的main方法开始执行
  • 如果应用程序的主类的源文件和其他源文件在同一目录中,可以只编译主类的源文件,Java系统会自动地先编译主类需要的其他源文件。

4.5 参数传值

  • 对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别
  • Java中,方法的所有参数都是“传值”的,也就是说,方法中参数的值是调用指定的值的拷贝。
  • 当参数是应用类型是,“传值”传递的是变量中存放的引用,而不是变量所引用的实体。
  • 可变参数类型必须相同且放在参数列表的最后。参数代表可以通过下标运算来表示参数列表中的具体参数。可变参数使用方法为public void f(int ... x)。可以使用for each语句操作可变参数。

4.6 对象的组合

  • 如果A类中的成员变量是用B类声明的对象,那么A和B的关系是关联关系。
  • 如果A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类,那么A和B的关系是依赖关系。

4.7 实例成员与类成员

  • 实例变量和类变量的区别
    • 不同对象的实例变量互不相同
    • 所有对象共享类变量
    • 通过类名直接访问类变量
  • 实例方法和类方法的区别
    • 对象调用实例方法,实例方法可以操作实例变量和类变量
    • 类名调用类方法,类方法不可以操作实例变量
    • 设计类方法的原则

4.8 方法重载

  • 方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。两个方法的参数不同是指满足下列之一:
    • 参数的个数不同
    • 参数的个数相同,但参数列表中对应的某个参数的类型不同

4.9 this关键字

  • this不能出现在类方法中,这是因为类方法可以通过类名直接调用,这时,可能还没有任何对象诞生。

4.10 包

  • package语句作为Java源文件的第一条语句,指明源文件定义的类所在的包,即为该源文件中声明的类指定包名
  • 如果源程序省略了package语句,源文件中所定义命名的类被隐含地认为是无名包的的一部分,只是这些类的字节码被存放在相同的目录中,那么他们就属于同一个包。
  • 如果主类的包名是tom.jiafei,那么主类的字节码一定存放在.../tom/jiafei目录中,那么必须到tom的父目录去运行主类,用如下格式来运行:java tom.jiafei.主类名

4.11 import语句

  • 常用包:

    • java.lang: 包含所有的基本语言类
    • javax.swing: 包含抽象窗口工具集中的图形、文本、窗口GUI类
    • java.io: 包含所有的输入/输出类
    • java.util: 包含实用类
    • java.sql: 包含操作数据库的类
    • java.net: 包含所有实现网络功能的类
  • 如果不更新classpath值,可以把程序使用的自定义的包名所形成的目录都放在同一文件夹中。

4.12 访问权限

  • 不能用protected和private修饰类
  • 访问限制修饰符按访问权限从高到低的排列顺序是public、protected、友好的、private

4.13 基本类型的封装

详情见JDK文档中对Double、Float、Byte、Short、Integer、Long、Character类的描述

4.12 对象数组

Student [] stu;
stu = new Student[10]

上述代码仅仅定义了数组stu有10个元素,但这些对象目前都是空对象,因此在使用数组stu之前,应当创建数组所包含的对象。

4.13 JRE扩展与jar文件

  • 只要将类打包为jar格式文件,放在扩展(/jre/lib/ext)中,程序就可以使用import语句使用扩展中的类了
  • 步骤:首先编写清单文件xxx.mf,然后使用jar cfm xxx.jar xxx.mf class文件路径打包,最后把xxx.jar文件放在JDK安装目录的/jre/lib/ext文件夹中

4.16 文档生成器

javadoc xxx.java

杂项

  • java.util.Arrays类可以调用public static void sort(double a[])把数组按升序排序,或者使用public static void sort(double a[], int start, int end)对a中索引start~end-1的元素进行升序排序。
  • java.util.Arrays类可以调用public static int binarySearch(double a[],double number)对有序数组进行二分法查找,如果找到,返回索引值,否则返回一个负数。
  • java.lang.Character类包含以下方法:isDigit()判断一个字符是否是数字,isLetter()判断一个是字符是否是字母,isUpperCase()判断是否大写,isLowerCase()判断是否小写,toUpperCase()转为大写字母

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

  • 问题1:使用package语句后,源文件目录结构分不清,在什么地方编译、运行?

输入图片说明

  • 问题1解决方案:经过试验,得出结论,如果主类中用到了别的类,那么编译的时候必须在所有要用到的类的父目录进行。在编译用到package语句的类时,使用-d,java会自动生成对应的目录存放class文件;class文件一定要放在package对应的目录下。

  • 问题2:书上public、protected、友好的、private之间的区别讲的不清楚。

  • 问题2解决方案:参考博客java中private,public,protected详解

输入图片说明

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

代码托管

输入图片说明

上周考试错题总结

其他(感悟、思考等,可选)

类是Java的核心,在程序的构造和思想上明显和面向过程编程不一样

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 32/32 3/3 20/20 掌握JDB用法
第二周 261/293 3/6 18/38
第三周 770/1063 2/8 10/48

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2019-03-17 21:13  MustaphaMond  阅读(267)  评论(0编辑  收藏  举报