java第四天学习内容回顾——java白皮书第四章

  1. java中有自动的垃圾回收器,不需要人工回收内存或者资源,所以java不支持析构函数。
  2. finalize方法可以添加进任何一个类,可以用来在回收短缺的资源,但作者并不提倡使用这个方法,因为程序员无法确定这个方法将在哪一时刻被调用,只知道它将在垃圾回收器前调用。
  3. System.runFinalizersOnExits 这个方法能够确保finalizer方法在java关闭前调用,但作者认为这样并不安全,有一个替代的方法:Runtime.addShutdownHook方法,具体在白皮书后面介绍。
  4. java中的import与c/c++中的#include粗看起来可能效果功能相同,但是却存在本质区别——C/C++编译器并不具备查看文件的功能,但是JAVA编译具备这种功能,所以这里有一个因果:所以C/C++需要使用#include来将声明包含进来,然而java使用import只是将包的路径包含,然后有编译器去查看文件。这里又有一个因果:所以C/C++没有#include就不行,但是在java中如果要声明一个变量,此时如果把包的路径完全给出并且由此包中的类名作为类型名的话就可以不使用Import包含这个包,程序不会出错。作者指出相对于C/C++中的#include,它们的namespce和using两个保留字更加相似与java中的package和import;
  5. 关于java中的静态导入问题,作者态度暧昧,详述于P136 白皮书。
  6. 将类放入包中,需要利用到package+包名,并将这条语句放置于源文件的开头,否则这个类就会被放入默认包,详述于白皮书P137
  7. 对于没有public和private修饰的类、数据域、方法等,表示可以被本包中的所有方法访问。所以一定要注意private不能遗忘,否则会破坏类的封装性。关于包密封机制详述于——白皮书P140,可以禁止向包中添加类。
  8. 有关路径问题详述于——白皮书p141,目前暂时略过
  9. 关于注释问题 详述于——白皮书p144,目前十分粗略的浏览。
  10. java类的设计时需要注意:a.一定要保证数据的私有 b.一定要将数据初始化 c.不要使用过多的基本类型. d.类的职责不应过多 e.命名
  11. 此处之后为第五章内容
  12. java中继承的关键字是extands ——A extands B A继承于B,不同于C++中的  :,而且java中的所有继承都是共有继承。超类——相当于超集的类(B) ,子类——相当于子集的类(A)。
  13. 子类中的方法不能直接访问超类中的私有数据域,需要通过超类中的访问器(接口函数)调用,如果子类中的方法与超类中的方法命名冲突,会覆盖超类方法,此时如果想使用超类方法可以利用super.方法名调用,不同于C++中的 :: 。虽然可以覆盖,但并不能删除超类中的任何元素(方法,数据域)。
  14. java子类的构造器中需要调用super();作为调用超类的构造器,用于将子类中在超类中声明的数据域进行初始化,并且,super()必须放在第一条语句位置。这里作者提到java中this和super的方法使用有些相似,例如this有两个功能1:表示隐藏参数2:构造器转移  super也有两个功能1:使用超类的同名方法 2:调用超类构造器。
时间: 2024-10-24 06:46:32

java第四天学习内容回顾——java白皮书第四章的相关文章

java第三天学习内容回顾——java白皮书第四章

java面向对象程序设计中使用到名词理解:对象标识==一个实例的变量名.对象行为==一个类的方法.对象状态==类中的数据域(严格讲是可以发生变化的数据域): 类之间的关系:use_a,has_a,is_a三种 java中的Math类有些特殊,它只封装了功能而并不涉及数据域,所以不需要也不必隐藏数据 java中的对象变量名更像是个指针(像),声明一个对象实例后必须用new构造对象然后用=将两者链接起来,也可以用=将两个不同的对象变量连接起来,但此时需要注意,就像指针赋值一样,两个变量自此将共享同一

java第12天学习内容回顾——java白皮书第7章

AWT:抽象窗口工具箱,AWT+IFC==SWING,Swing是基于AWT架构之上的提供组件,但处理事件依然用AWT Swing用于 被绘制的用户界面类,javaFX可能会替代它,AWT 用于底层机制. 用户可以指定"观感",此外Metal是专属于java的"观感" Swing库中,JFrame类用于描述顶层窗体,它是极少数不需要绘制在"画布"上的SWing组件之一,所以它的"修饰部件"是由用户的窗口系统绘制,而不是Swin

java第13天学习内容回顾——java白皮书第8章

java事件处理机制 事件的相关信息被封装在一个事件对象中(一个参数),事件源将这个时间对象分发到它的所有监视器中,并有监视器对事件作出反应. AWT时间处理机制 监听器对象构造出一个实例,这个实例实现了监听器接口 事件源是一个对象实例,这个实例可以注册(添加)监听器,并发送事件(事件发送到监听器) 事件发生时,事件源将发送到所有被添加进事件源的监视器 监视器利用被发送过来的事件信息决定如何相应 3.一个事件源可以对应多个监视器,监听器接口ActionListener接口,这个接口中只包含一个方

java第12天学习内容回顾——java白皮书第9章

Swing 用户界面组件 一种模式:模型----视图-----控制器 模式有很多种,例如:模型----视图----控制器(原则为限制一个对象拥有的功能数量):组合模型--容器和组件之间:装饰器模式----带滚动条的面板:策略模式-----布局管理器 内容---外观----行为----MVC 模型与视图之间关系 1:n 模型独立于观感,所以,有重用的可能 模型可能相同,但视同和控制器可能不同 metal观感中,JButton 继承了JComponent的包装器类,后者包含了DefaultButto

java第二天学习内容回顾——java白皮书第三章

对于由控制台进行输入时,需要利用到Scanner控件进行辅助,可以利用它进行整行或者单字节的读取,此外需要注意,如果是密码方面的输入问题,需要利用的Console空间,其限制每次只能固定读取一整行. java需要包含某些包时,利用import保留字,不同于Include java关于格式化输出问题的详述于白皮书P57 String.format方法的使用与作用类似于print,但不同处在于前者只是创建了一个格式化的字符串,而后者则是打印出格式化的字符串. 对于当前时间的多种打印形式详述与白皮书P

java第一天学习内容回顾——java白皮书第三章

java虚拟机可以使用即时编译和字节码(为达到独立于平台的特性)两种,对使用频繁的字节码序列将编译成机器码实现即时编译. java中基本类型的字节数是固定的(为方便移植),与C/C++不同(它们只确定了相对大小关系),java中byte(1) short(2) int(4) long(8) float(4) double(8). java分为标准版.微型版(嵌入式).企业版(后端) HTML是描述网页结构的方式,java是程序设计语言,其内容提供的applet可以嵌入网页中. XML是描述数据结

java第五至七天学习内容回顾——java白皮书第五章

java学习过程出现第一次滞后,背景:清明节以及持续1周的雨. 方法签名=方法名+参数列表. 在覆盖方法时需要注意:1.覆盖后的方法返回类型的兼容性:2.新的方法的可见性必须不低于原方法的可见性. 这里有一个因果:每次调用方法都要进行搜索开销很大,所以 虚拟机 会预先为 每一个类 建立方法表,使用时直接查表,此外,除了private,static,final方法,所有的方法都是动态链接. 调用 某个方法 的实际解析过程 详述于白皮书P160: final 修饰的类将不允许出现继承,此类中所有的方

算法(第四版)学习笔记之java实现栈和队列(链表实现)

下压堆栈(链表实现): import java.util.Iterator; public class LinkedStack<Item> implements Iterable<Item> { public class Node { Item item; Node next; } private Node frist; private int N = 0; public boolean isEmpty() { return N == 0; } public int size()

算法(第四版)学习笔记之java实现可以动态调整数组大小的栈

下压(LIFO)栈:可以动态调整数组大小的实现 import java.util.Iterator; public class ResizingArrayStack<Item> implements Iterable<Item> { private int N = 0; private Item[] a = (Item[]) new Object[1]; public boolean isEmpty() { return N == 0; } public int size() {