thinking in java 第五章2 初始化
第一点:
在编写程序的过程中,java会保证尽量在使用的时候初始化,所以在没有初始化的变量在使用过程中编译器会报错,这里我们说的变量有2种,一种是全局变量,一种是局部变量,全局变量编译器会自动赋给初值,而局部变量不能,看下面例子:
public class Chushihua {
private int j;
private Integer i1;
public void f() {
int i;
int n = j * 12;
Integer i2;
// int m = i*12;没有初始化,不能使用
System.out.println(j);
System.out.println(i1);
// System.out.println(i2); 没有初始化,不能使用
}
public static void main(String[] args) {
new Chushihua().f();
}
}
所以说对象和变量是一样的,全局的jvm会赋给初值,但是局部的必须赋给初值后才能使用,在使用的过程中还要注意变量的初始化顺序的问题。
第二点:
构造器和系统自动初始化的顺序,
public class Counter {
private Integer i = new Integer(5);
Counter() {
System.out.println(i);
System.out.println(j);
i = new Integer(7);
System.out.println(i);
}
private Integer j;
public static void main(String[] args) {
new Counter();
}
}
输出结果:
5
null
7
由此例子可以看出顺序,jvm会先对全局变量进行初始化,也就是构造方法的赋值操作是在初始化之后的。
也就是在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量散落在各个方法之间,他们仍会在构造器之前初始化。
静态数据的初始化:无论创建多少个对象,静态对象只占有一份存储区域。Static关键字不能应用于局部变量,因此他只能作用于域。
总结,一个对象在创建的过程中的初始化。
初始化的顺序是先静态对象,然后是“非静态”的对象,并且静态的对象在第一次对象初始化的时候只初始化一次。
构造器其实也是静态方法。
静态初始化块,当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时(即使从未输出国那个类的对象),这段代码仅执行一次。非静态的初始化块世界和静态的初始化块是一样的,只是少了static
class Cup {
Cup(int i) {
System
相关文档:
在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......
在做pdf文档转成jpg的时候,发现了Jmagick的创建高质量的图片的一个java类库,自己以前使用另外的一个类库,感觉这个更好点,就试着用了下,感觉不错
1.使用的windows下的jmagick-win-6.3.9-Q16.zip 地址是:http://downloads.jmagick.org/6.3.9/
2.doc对应的api地址:http://downloads.jmagick.org/jmagick-doc/
3.安装Ima ......
第一章 概述
版权声明
此文档由王健旭(http://www.wangjianxu.com ginger547@gmail.com )负责整理总结,并对该文档保有有限责任权利,此文档只能用于学习以及教学,请勿用作商业用途,因此而
产生的法律问题,本人一概不负责。 本 ......
下载链接http://ictclas.org/Down_OpenSrc.asp
简单介绍:
imdict-chinese-analyzer是 imdict智能词典的智能中文分词模块,作者高小平,算法基于隐马
尔科夫模型(Hidden Markov Model, HMM),是中国科学院计算技术研究所的ictclas中文分词程序
的重新实现(基于Java),可以直接为lucene搜索引擎提供中文分词支持 ......
JAVA会产生内存泄露吗?首先,答案是肯定的。Java虽然有垃圾回收器,但依然存在泄漏。
Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源,最后没有free掉,内存没有回收,这个是真正意义上的内存黑洞;而Java的泄漏则 ......