20165228 2017-2018-2 《Java程序设计》第3周学习总结
教材学习内容总结
- 编程语言
- 面向机器语言:机器能直接识别的语言, 其指令由特定的二进制码表示。
其中汇编语言是使用人更容易记住的符号来代替二进制码,其特点是执行速度快,编程费劲,能够直接操作硬件 - 面向过程语言:将解决问题封装成过程,程序运行时先由编译器编译成机器指令再执行。特点是无对象
- 面向对象语言: 例如Java,C++;三大特点是:封装性(将数据和对数据的操作封装在一起)、继承(子类继承父类的属性和行为)、多态。需要进行操作时,首先想到哪个对象去完成操作。最重要的是掌握类的用法,能处理复杂问题。
- 面向机器语言:机器能直接识别的语言, 其指令由特定的二进制码表示。
- 类结构:
class+类名 {
类体内容
}
- 要求:
类名:使用拉丁字母时,名字首字母大写- 类体的内容: 变量声明(储存属性的值)和方法的定义(对类中声明变量进行操作,给出算法)
声明变量时须同时赋值,声明语句中不可单独出现赋值语句. - 成员变量:其数据类型可以是基本类型、逻辑类型、引用类型(包括数组、对象和接口),成员变量在真个个类都有效,与其所在位置前后无关。变量名习惯首字母小写,当有多个单词组合而成时,从第二个单词开始每个单词首字母大写
- 方法
- 类体的内容: 变量声明(储存属性的值)和方法的定义(对类中声明变量进行操作,给出算法)
方法的类型+名称+(参数列表) {
方法体内容
}
无参数的方法头:
int speak() {
}
有参数的方法头:
int add(int x,int y,int z) {
}
- 局部变量:只在方法内有效,并与其声明位置有关,它在声明的位置后生效。没有默认值,使用前须确认有具体的值
- 构造方法:类中的构造方法的名字必须与它所在类的名字完全相同,无类型。若要在一个类中编写若干个构造方法,须保证各自的参数不同
- 对象:用类声明的变量,声明后还须创建对象(分配所拥有的变量)
- 一个类声明的两个对象如果具有相同的引用,二者就具有完全相同的变量
允许两个对象赋值
object2=object1;
- 创建对象:
声明对象:
类的名字+对象名字;
}
给对象分配变量:
对象名 = new 类的名字();
- 使用对象:
对象操作变量
对象.变量;
对象调用类中的方法
对象.方法;
- 方法中的参数属于局部变量,向参数传递值时,值的级别不可高于参数的级别
- 可变参数要求:不给出参数列表中从某项开始直到最后一项参数的名字和个数,但类型必须相同,最后一个参数必须是方法参数列表中的最后一个
public void f(int ... x)
public void g(double a,int ... x)
其中x成为方法参数列表中可变参数的"参数代表",可以通过下表运算来表示参数列表的具体参数。例x[0],x[1]...x[m-1]分别表示x代表的第1个至第m个参数
对于可变参数的增强型for语句
for(声明循环变量:参数代表) {
...
}
- 实例成员与类成员:
- 变量声明时,用关键字 static 给予修饰的成员变量称作类变量,否则称作实例变量
- 类变量与实例变量间的区别:
1、不同对象的实例变量互不相同
2、所有对象共享类变量
3、通过类名直接访问类变量 - 方法声明时,用关键字 static 给予修饰的方法称作类方法,否则称作实例方法
- 方法重载
- 一个类里可以有多个方法具有相同的名字,但这些方法的参数必须不同。
- 重载方法之间必须保证相互的参数不同,但需要注意在被调用时可能出现歧义调用
- this关键字
- 在构造方法中使用this时,代表使用爱构造方法所创建的对象,此时"this"可省略
- 在实例方法中使用this,this代表正在调用该方法的当前对象
实例方法操作类的成员变量的默认格式:
this.成员变量;
}
当static成员变量在实例方法中出现时的默认格式:
类名.成员变量;
实例方法调用的默认格式是:
this.方法;
类方法调用的默认格式是:
类名.方法;
- import语句
- import语句的作用:当一个类需要另一个类声明的对象作为自己的成员或方法中的局部变量,若他们不在一个包中,则需要import语句引入包中的类和接口。
- 不仅可以引入类库中的类,还可引入自定义包中的类
import java.util.*;
import tom.jiafei.*;
教材学习中的问题和解决过程
- 问题1:没搞明白教材(P83)4.8.2中的歧义调用,为什么无法通过编译
- 问题1解决方案:10为int型,10.0为double型,参数(10,10)对应的应该是(int m,int n),而类中却没有这样的调用
代码调试中的问题和解决过程
- 问题1:能否不引入java.util包里的全部类,而有选择性的引入个别类
- 问题1解决方案:使用 import java.util.Date
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 25篇 | 400小时 | |
第一周 | 235/235 | 1/1 | 15/15 | |
第二周 | 224/459 | 2/3 | 15/30 | |
第三周 | 443/902 | 1/4 | 15/73 |
计划学习时间:17小时
实际学习时间:15小时