一、
静态代码块:
是在当类被载入(内存)时,(最先被调用的),静态代码块被执行,且之被执行一次,静态块常用来执行类属性的初始化。执行类的载入之前就会调用。
非静态代码块:
是在当类的对象被创建载入(内存)时,(最先被调用的),每创建一个对象,即每载入一个对象,非静态代码块都执行一次。执行类对象的载入之前就会调用。
对象载入之前,一定要是类先被载入。
静态方法、非静态方法:都是调用时,才执行的。静态方法属于类的,加载完类就可以调用静态方法;非静态方法是属于对象的,加载完对象就可以调用非静态方法。
加载类的动作没有什么标志性,但是加载对象的标志动作就是new动作,会去执行
更精简:
静态代码块:类每次加载到内存中调用一次,并最先调用
非静态代码块:类的对象每次加载到内存中调用一次,并最先调用,然后是调用对应的构造方法
静态方法、非静态方法:都是进行方法调用时才执行,调用静态方法,前提是:类已经加载到内存中;调用非静态方法,前提是类的对象已经加载到内存中。
那么,
类什么时候被加载/类加载时机:【即类被使用时,就会加载】
第一:生成该类对象的时候,会加载该类及该类的所有父类;
第二:访问该类的静态成员的时候;
第三:class.forName("类名");
代码块是自动的,方法是被动的。
作用:静态代码块可以用来初始化一些项目最常用的变量和对象;静态方法可以用作不创建对象也可以能需要执行的代码。
引申:JVM(内存)主要分区:程序计数器、本地方法栈、堆(heap)、虚拟机栈(stack)、方法区(method)
堆:放对象实例
栈:局部变量表、操作数栈、动态链接、方法出口(程序上下文)
方法区:被虚拟机加载的类信息、常量、静态变量、及时编译器编译后的代码。
http://www.tuicool.com/articles/eyI73u
有类继承的情况也一样分析:先加载子类的类,那么要加载父类的类,之后new一个子类,那么之前也要new一个父类
二、
iterable接口:集合类实现了iterable接口,调用接口的iterator()方法可以生成一个迭代器。iterator迭代器也是一个接口,集合类不直接实现它的原因是调用iterator()方法可以生成下标从0开始的迭代器。
enumeration接口:迭代器接口,类似于iterator。
区别:enumeration只有hasMoreElements()、nextElement()两个方法,而iterator有hasNext()、next()、remove()三个方法,多了一个删除功能。
vector可以使用enumeration,所有集合类都可以使用iterator。
http://www.blogjava.net/seaairland/articles/44367.html
三、
在Java里面参数传递都是按值传递:(由不同角度考虑)
按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,可以统称为按值传递。
四、date
五、
java回调:
就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call back”。
http://www.brieftools.info/
http://www.hztarena.org/Html/soft/201212/1762.html
http://www.51cto.com/specbook/24/6720.htm