20165208 2017-2018-2 《Java程序设计》第三周学习总结
20165208 2017-2018-2 《Java程序设计》第三周学习总结
教材学习内容总结
4.1 编程语言的几个发展阶段
- 称过程语为高级语言。
- 面向对象编程的几个特性:封装型、继承、多态。
- 继承:子类可以继承父类的属性和行为。
- 多态:分为操作名称的多态(多个操作具有相同的名字)、和继承有关的多态(同一个操作被不同类型对象调用时可能产生不同的行为)。
- 属性通过变量來刻画,行为通过方法来体现。
定义理解
类
- 类包括类声明和类体,类声明
class 类名
(类的名字要符合标识符规定)。 - 类体内容:包括变量的声明和方法的定义。
所声明的变量包括成员变量和域变量。 - 如果局部变量的名字与成员变量的名字相同,则隐藏成员变量。若要使用需
this.成员变量
。 - 在使用局部变量前必须保证局部变量有具体的值。
- 注意事项:类体中对于成员变量的操作只能出现在方法中。在类中
int a=12
是合法的
int a;
a=12;
是不合法的
- 一个源文件中的类可以被多个java程序使用,
对象
- 由类声明的变量被称作对象变量,简称对象。
- 对象的声明:
类的名字 对象名字
。 - 创建对象:
类中没有构造方法的:
XiYouJi zhubajie;
声明对象
zhubajie = new XiYouJi();
为对象分配变量
定义了构造方法的:
XiYouJi zhubajie;
声明对象
zhubajie = new XiYouJi(10,20);
为对象分配变量
new XiYouJi()
是一个值,把该引用赋值给了zhubajie
- 使用对象:
对象.变量
访问自己的变量体现属性;对象.方法
调用类中的方法体现行为 - 对象的实体:指分配给对象的变量
- 注意:不能使用空对象去调用方法产生行为;一个类声明的两个对象如果有相同的引用就具有完全相同的变量,即完全相同的实体。
方法
- 无参数的方法头
int speak()
,有参数的int add(int x,int y,int z)
- 方法在理解上类似于C语言中的函数。
- 构造方法:名字必须与它所在类的名字相同,而且没有类型,如
Point(){}
,一个类中可以有若干个构造方法,但必须保证参数的个数不同,或参数列表中对应的某个参数的类型不同。 - 一个类中可以有不同个方法。
可变参数
- 是在声明方法的参数列表中给出的不确定个数的参数,参数类型必须相同,如
public void f(int ...x)
,x为参数代表。
public void g(double a,int ...x)
是合法的
public void g(int ...x,double a)
是不合法的
- x.length等于x所代表的参数的个数
- 可变参数的for循环
for(声明循环变量:参数代表)
实例成员与类成员
- 实例变量和类变量:
static
修饰的为类变量,也称静态变量 - 实例方法和类方法:
static
修饰的为类方法,也称静态方法 - 实例方法可以操作实例变量、类变量。类方法可以操作类变量
this
this可以出现在实例方法和构造方法中,不可出现在类方法中。
构造方法:this代表使用该构造方法创建的对象。
实例方法:this代表正在调用该方法的当前对象。
this.实例成员变量
、this.实例方法
类名.static成员变量
、类名.类方法
this和类名通常可省,但当局部变量和实例成员变量的名字相同时,均不可省。
package
- 建立包是为了当不同的源文件中包含名字相同的类的情况时,便于区分这些类。
- 包的创建:
package 包名
- 编译运行:
因为package类运行要求:源文件编译得到的类的字节码文件的保存目录必须包含包名。
举例说明:package 20165208.ky;
则存储文件目录必须包含...\20165208\ky;
所以可以利用以下两种方法实现
- 利用
javac -d 路径 文件.java
、java -cp .:路径 包名.文件名
相当于去指定路径下编译生成字节码文件 - 利用
mkdir 目录
、mv 字节码文件 目录
、java 目录.Hello
在原有目录编译后,人为创建同包名目录,将字节码移入该目录下。
import语句
- 用于引用在其他包中的类,必须写在package语句和类的定义之间。
- 引用java.util包中全部的类
import java.util.*
,引用java.util包中的Date类import java.util.Date
. - 除了import语句引入,还可以直接带着包名使用该类。如
java.util.Date date =new java.util.Date():
- 引入非类库中有包名的类
import 包名.*
- 注意:程序使用的的自定义的包名所形成的目录应放在同一文件夹中。
访问权限
- 友好变量:不用private、public、protected修饰的变量。
- 访问权限从高到低:public、protected、友好的、private
对象数组
即数组的元素是对象
Student [] stu;
//定义每个元素都是Student类型的对象stu = new Student[10]
//定义数组stu有10个元素stu[0]=new Student()
//创建数组所包含的对象
注意事项
- 编译某个目录下的全部java源文件应如
javac -d bin src/ex4.1/*.java
- 向方法参数传递的值的级别不可以高于该参数的级别。
其他
- java引用型数据包括数组、对象、接口。
- 若A类中的成员变量是用B类声明的对象,则A、B是关联关系。
若A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,则是依赖关系。 - 方法重载:行为的多态性就是方法的重载。一个类中可以有多个方法具有相同的名字,但这项方法的参数必须不同(个数不同或者对应的某个参数的类型不同)
如果两个方法的名字相同,即使返回类型不同,也必须保证参数不同。
教材学习中的问题和解决过程
- 问题1:有关教材中4.15所讲的例子,按照操作步骤进行能得到jar文件,但是在虚拟机中找不到jre\lib\ext,尝试将压缩包放到相近路径下,运行失败。
代码调试中的问题和解决过程
-
问题1:
-
问题1解决方案:问题出现是因为没有考虑到package包的运行,直接在bin文件下javac操作导致找不到主类,按图中更改后即可运行
-
问题2:
-
问题2解决方案:
-
问题3:
-
问题3解决方案:调试如图
代码托管
上周考试错题总结
>>>
为无符号位右移,>>
为带符号位右移,区别在于移位空出来位置,带符号位的全部需要用符号位补齐。- if关键字后面的小括号内,表达式的值可以为10。这句话是错的。表达式是指整个式子,不应理解为if(a==10).
- 3* 2^2的结果并非12,而是4,我理解的是优先运算3*2,再与2进行异或。
- 0xaa转化为二进制应为10101010
参考资料
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 36/36 | 4/4 | 30/30 | |
第二周 | 464/500 | 1/5 | 18/48 | |
第三周 | 331/881 | 2/7 | 17/65 |