知识点总结
类
- 类的概念:类是用来创建对象的模板,包含被创建对象的状态描述和行为的定义。
- 类的目的:抽象出一类事物共有的属性(数据)和行为(操作)
类的组成:
class 类名{ 类体的内容 }
- 类体:变量声明+方法定义。
- 成员变量:其类型可以是java中的任何一种数据类型。
- 方法
- 方法返回的数据类型可以是java中的任何一种数据类型。
- 方法是void型时,该方法不需要返回数据。
- 方法的参数可以是java中的任何一种数据类型。
- 成员变量与局部变量
- 若成员变量与局部变量名字相同,则隐藏成员变量。若想用成员变量,使用关键字
this.名称
- 成员变量有默认值,局部变量没有。使用前必须赋值。
- UML图:P57
- 类的构造方法
- 构造方法的名字必须与它所在的类的名字完全相同。
- 构造方法没有类型。
若未编写构造方法。系统会默认该类只有一个没有参数的构造方法。且方法体中无语句。
类与对象
- 创建对象
- 声明对象:
类的名字 对象名字
- 为对象分配变量:
对象 = new 构造方法
- 使用对象
- 对象.变量(实体)
- 对象.方法
- 不同匿名对象也可以访问自己的变量(weight等)P63
- 注意重点:
- 避免使用空对象
- 一个类声明的引用相同的两个对象,具有完全相同的实体。
- 一个类创建的两个对象具有不同的引用。
- 某个变量如过不再被任何对象所引用,立即被释放实体所占内存。立刻执行,让System类调用gc()方法。
- 参数传值
- 基本数据类型的参数,向该参数传递的值的级别不可高于该参数的级别。可以向double型参数传递一个float值。
- 引用类型参数的传值:如果改变参数变量所引用的实体,就会导致原变量的实体同样发生改变。引用型变量将引用传值给参数,他们指向同一实体。
- 可变参数:在声明方法时不给出参数列表中从某项开始直到最后一项的名字和个数,但参数的类型必须相同。
- 类变量与实例变量
- 声明:static修饰的为类变量,否则为实例变量。
- 实例变量与相应的对象相关联,类变量和类相关联
- 类方法与实例方法
- 分配入口地址:实例方法在该类创建对象后;类方法在该类被加载到内存时
- 调用:实例方法通过对象调用,类方法可以通过类名或对象调用
- 操作:实例方法可操作实例变量和类变量;类方法只能操作类变量。
- 方法重载
- 重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。
- this关键字:表示某个对象,代表使用该构造方法所创建的对象。
- this关键字出现在实例方法中时,this就代表正在调用该方法的当前对象。
- 包
- 包语句:
package 包名
包名可由若干个“.”分隔而成。 - 运行包:java 包名 主类名
- import语句
- 可以有多个import语句,他们必须在package语句和源文件中的类的定义之间
- 访问权限
- 私有变量:用private修饰的成员变量
- 共有变量:用public修饰的成员变量
- public >protected >友好的 >private
- 基本类型的类封装
- 存在java.lang包中 P95
JDB调试
- 可以用
Ctrl+Shift+T
快捷打开三个标签,用tab1、tab2等切窗口 - 窗口1:编辑代码vim,按w保存不退出
- 窗口2:编译用参数
-g
调试 - 窗口3:jdb -classpath 地址 类名
- 调试:
- stop in设置方法断点,stop at设置断点
stop in HelloJdb.main
- 键入
run
命令运行程序 - 用
step
运行下一行代码 - 用
local
查看命令结果 - 用
print
查看变量的值 - 用
list
查看源代码运行到的位置,由于.class和.java不在同一目录下,我们要使用use指出源代码位置 - 循环体可以用
stop at HelloJDB:12
在12行设置断点,然后运行cout
将循环运行完 - 用
clear
查看设置断点的情况 - 用
exit
退出JDB
本周学习问题及解决
- 在编译运行Example17和18时显示找不到文件,(忘了截图了。。)后来知道要将两个包里的两个类公用必须将它们放在同一个目录下编译运行
- 在JDB调试时出现以下问题
查看tree后发现是路径选错的问题,另外,在JDB中不能用-cp,而要用-classpath来进入路径