《Java 编程思想》-第5章 初始化和清理 笔记
2017-01-18 16:30
369 查看
第5章 初始化与清理
一,默认构造器默认构造器是没有形式参数,如果你写的类没有构造器,则编译器会自动帮你创建一个默认构造器。但是,如果已经定义一个构造器(无论是否有参数),编译器就不会帮你自动创建默认构造器。
二,方法重载
(一),区别重载的方法是根据参数列表的不同,参数的类型不同,参数的顺序不同(会使代码难以维护)。
(二),如果传入的数据类型小于方法中声明的形式参数类型,传入的数据类型会被提升,char类型略有不同,如果无法找到恰好接受char参数的方法,就会把char提升为int。反之,就会对传入数据类型进行窄化转化。
三,this关键字
(一), this可以认为是“当前对象”的引用,用法与其他对象的引用并无不同。如果在方法内调用同一个类的另一个方法时,可以直接调用,
(二),this可以调用一个构造器,但却不能在同一个构造器中调用两个构造器,并且要放在构造器最起始处,此外,不能在其他方法内调用构造器。
四,清理
(一),说到Java的垃圾回收前,要说说Java中的堆和堆栈的区别:
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
1,栈(stack):是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量。在java中,所有基本类型和引用类型都在栈中存储,栈中数据的生存空间一般在当前scopes内(就是由{…}括起来的区域)。
2,堆(heap):是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),C中的malloc语句所产生的内存空间就在堆中,在java中,所有使用new xxx()构造出来的对象都在堆中存储,当垃圾回收器检测到某对象未被引用,则自动销毁该对象,所以,理论上说java中对象的生存空间是没有限制的,只要有引用类型指向它,则它就可以在任意地方被使用。
3,栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存储分配需要更多时间。
(二),垃圾回收机制详解
http://blog.csdn.net/zsuguangh/article/details/6429592
五,可变参数列表
代码:
public class Test4 { public static void f(int i,String...trailing) { System.out.print("require: "+i+" "); for(String s:trailing) { System.out.print(s+" "); } System.out.println(); } public static void main(String[] args) { f(1,"one"); f(2,"one","two"); f(0); } }
在重载时使用可变参数列表,要小心,会出现错误
public class Test4 { public static void test(String... args) { System.out.println(args.getClass()); for (String arg : args) { System.out.println(arg); } } public static void test(String arg, String... args) { System.out.println(arg); System.out.println("----------------"); for (String s : args) { System.out.println(s); } } public static void main(String[] args) { test(); test("aaa"); test("aaa", "bbb"); test("aaa", "bbb", "ccc"); } }
错误提示:The method test(String[]) is ambiguous for the type Test4,方法类型有歧义。
相关文章推荐
- [学习笔记][Java编程思想]第5章:初始化与清理
- 【Java编程思想笔记】第五章-初始化与清理
- Java 编程思想(第四版)学习笔记(5)初始化与清理
- Java编程思想:第5章 初始化与清理
- java 编程思想的学习笔记 - 第五章 初始化与清理
- Java编程思想 4th 第5章 初始化与清理
- Java编程思想 第5章 初始化与清理
- 【笔记】Java编程思想—一初始化与清理
- Java编程思想,读书笔记三(第5章 初始化与清理)
- 【Java编程思想】(1)初始化与清理
- java编程思想之初始化与清理
- Java编程思想——第五章 清理与初始化
- java编程思想-第五章-初始化与清理
- java编程思想 第五章初始化与清理
- 《Java 编程思想》005 初始化和清理
- Java编程思想 ——第五章 初始化与清理
- 控制执行流程,初始化与清理-java编程思想-第4、5章
- JAVA编程思想学习第五篇の初始化与清理
- java 编程思想--初始化与清理
- Java编程思想之初始化与清理