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
相关文档:
在做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 ......
一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当你需要再开发另一个相近的项目时,你以前的抽象层说不定还可以再次利用 呢,面对对象的设计 ......
用spy和memcached for java两种方式对memcache进行操作
一、spy
package com.test.memcache;
import java.net.InetSocketAddress;
import java.util.concurrent.Future;
import net.spy.memcached.MemcachedClient;
/**
* 本类用的包是memcached-2.4.1.jar
* 下载地址: http://code.googl ......
class EnclosingOne {
public class InsideOne {
}
}
public class B {
public static void main(String[] args) {
EnclosingOne eo = new EnclosingOne();
EnclosingOne.InsideOne ei = eo.new InsideOne();
}
} ......
JAVA会产生内存泄露吗?首先,答案是肯定的。Java虽然有垃圾回收器,但依然存在泄漏。
Java内存泄漏跟C/C++内存泄漏的概念不一样:C/C++的内存泄漏是指Malloc了一些资源,最后没有free掉,内存没有回收,这个是真正意义上的内存黑洞;而Java的泄漏则 ......