1、构造器初始化
①在概念上,“创建”和“初始化”是两回事,在java中,两者是捆绑在一起不可分割的。java提供了构造函数初始化对象,当用户有能力操作对象的方法之前,java
编译器自动调用构造函数初始化对象。
②如果一个类中,用户没有定义任何构造函数,系统会自动分配一个默认构造函数(无参构造函数),但是,只要用户定义了至少一个构造函数,系统就不会再自动分配。
③在一个类中,一个构造函数可以调用另一个构造函数(
不可以调用两个),但是不允许构造函数在其他方法中被调用。
④java中可以调用C和C++程序(本地方法)。
2、方法重载
①区分重载方法的依据:参数列表(个数,类型,顺序),但不能根据返回值区分。
②传入的数据类型小于方法中声明的形参类型时,会被自动提升,提升顺序为byte-short-int-long-float-double,但是
char例外,它直接被提升为int。反之,必须显示进行类型转化,否则编译不通过。
3、清理:终结清理和垃圾回收
①如果程序运行期间不面临内存耗尽的情况,是不会调用垃圾回收器去进行垃圾回收的,因为这也是有开销的。
②垃圾回收器准备好回收某个对象时,先调用finalize方法,在下次回收的时候,才真正的将这个对象回收。
③finalize除了可以做一些清理工作外,如释放非new方式创建对象分配的空间。另外可以作为
终结条件进行验证。
④垃圾回收器的模式有引用计数和另一种模式,这种模式的思想是,从堆栈或者静态存储区开始,遍历所有的引用,就可以找到活的对象,然后追踪该对象的所有引用,直至遍历了整个网,不在网内的对象即为死对象,基于这种模式的垃圾回收技术有停止-复制,标记-清除,他们都必须在程序停止的情况下可能进行。
⑤java中提供了
JIT编译器提供速度,它负责把程序翻译成本地机器码,机器码要比字节码长的多。翻译时有两种方法:一次全部翻译完和
惰性评估。
4、成员初始化
①对于方法的局部变量,若未初始化就使用,编译是通不过的。
②类的成员变量会被自动赋值,而且是在构造函数赋值之前。
这与成员变量的声明位置无关。
java中初始化顺序:显示静态变量,后是非静态变量,静态变量只被初始化一次,非静态变量会被初始化多次,当它所在的类new一个对象的时候,它就被初始化一次。
③对于类中的static{}程序块,同静态初始化一样只执行一次,当首次生成这个累的一个对象时,或者首次访问属于这个类的
静态数据成员时(即使从未生成过
这个类的对象)。
5、数组初始化
①声明方式:int[] a; int a[];
②int[] a1={1,2,3,4};
//这种初始化方式只可以用在定义的地方
int[] a2=a1;
当a2改变时,a1也变。
③可变参数列表:数据类型可变,采用Object作为形参;
数组作为形参:String[],或者String...(java SE5之后支持)
6、enum
①定义形式
public enum Types{T1,T2,T3,T4}
②使用形式
Types t= Types.T1;
③java为enum提供的方法有toString(),ordinal(),values()。
④enum可以用作switch的条件:
Types type;
switch(type){
case T1: ...; break;
case T2: ...; break;
...
}
求解:①一个类中,在定义时就被初始化了的String域,和通过构造器初始化的另一个String域,有什么差异?
②垃圾回收第二种模式中,为什么活的对象,一定能最终追溯到其存活在堆栈或者静态存储区中的引用?为什么位于这个网中的对象就是活的,而遍历不到的就是要回收的呢?
分享到:
相关推荐
初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt初始化和清理.ppt
NULL 博文链接:https://listen-raining.iteye.com/blog/1887594
java编程思想-初始化与清理了解this之后,你就能更全面地理解“静态(static)方法”的含义。静态方法就是没有this的方法。在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。而且你可以在没有创建...
Java编程思想第05章初始化与清理.ppt
第4章 初始化和清理.ppt安徽工业大学博士生 课件
Java编程思想初始化与清理PPT教案学习.pptx
初始化,甚至不知道必须要初始化时。(库中通常不包含初始化函数,所以用户不得不手工初 始化s t r u c t)。清除是一个特殊问题,因为 C程序员一旦用过了一个变量后就把它忘记了,所以 对一个库的s t r u c t来说...
注意:本文所说的全局变量指的是 variables with static storage,措词来自 c++ 的语言标准文档。 什么时候初始化 ... static initialization: 静态初始化指的是用常量来对变量进行初始化,主要包括 zero init
混沌映射sin映射初始化种群,与标准pso求解sphere函数,精度更好
Java 的初始化问题和其他高级语言类似。一个明显不一样的地方是体现在它的类加 载过程。传统的编程语言包括C++等,程序是作为启动过程的一部分立刻被加载,而Java 的 类加载只在需要使用程序代码时才会被加载(每个...
板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序板初始化程序
【C】数组数组初始化总结;参见博客https://blog.csdn.net/u010168781/article/details/80061118
matlab初始化数组
typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化 typedef struct 与 struct 的区别及初始化
vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue初始化模板vue...
主要介绍了C#中结构(struct)的部分初始化和完全初始化,通过实例分析了结构初始化中常见的错误及技巧,有助于加深对C#结构(struct)的认识,需要的朋友可以参考下
cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码cuda初始化代码
8251 端口初始化 包含定义13个输入端口和9个输出端口
计算机组装与维修第9章BIOS设置与硬盘初始化.pptx
声明、初始化与赋值的区别: 声明:int a; 初始化:int a = 2;(在声明的时候顺带赋值叫做初始化) 赋值:a = 2; 只有定义(int a;)才分配存储空间,初始化必须要有存储空间来初始化 全局变量在声明时候顺带赋值...