易截截图软件、单文件、免安装、纯绿色、仅160KB

Java中奇怪而又无可厚非的类加载顺序

昨天看到这样一篇帖子,讨论类加载顺序的,也可以说是初始化顺序的,今天早上找不到了,本来想回复的,现在自己写博客回复了,呵呵
public class Singleton {   
private static Singleton obj = new Singleton();   
public static int counter1 ;   
public static int counter2 = 0;   
private Singleton()   
{   
counter1++;   
counter2++;   
}   
public static Singleton getInstance()   
{   
return obj;   
}   
public static void main(String[] args) {   
Singleton.getInstance();   
System.out.println("obj.counter1=="+counter1);   
System.out.println("obj.counter2=="+counter2);   
}   
  
}   
  
我不了解为什么obj.counter1=1,obj.counter2=0.希望给我说说
刚开始也很迷茫,我想不通的问题是什么时候声明的变量count1、count2?
以前的理解它的执行顺序应该是这样的:
1、加载类,当然首先执行的是
private static Singleton obj = new Singleton();  
2、所以出现了对中对象的创建,于是执行构造方法:
private Singleton()   
{   
counter1++;   
counter2++;   
}  
3、按照顺序,应该执行下一条语句,即:
public static int counter1 ;   
public static int counter2 = 0;  
好了,类的加载过程完成了。
现在才开始执行main方法的第一条语句,随后的结论都成立了。
现在的问题出现了:什么时候声明的变量count1、count2?
查询了一些资料,终于解决了,我认为应该是这样的:
类加载的顺序其实以上的说法是有误的,也就是以前的理解是存在偏差的,除非出现想文章这样的程序才会暴露出来。好了,废话少说,看看真正的类加载顺序:
类加载分为三个过程:装载、链接、初始化。
装载的过程就是将class文件读入内存的过程,并且提取其中的类关键信息,比如:方法、变量等等。
而在链接中存在三个步骤:
a、进行字节码的检查,看是否符合class文件规范;
b、对类中的类变量进行分配空间,附初始值。此处专指基本类型。
c、对类中的引用变量进行分配空间


相关文档:

eclipse中将java项目转为web项目


1.修改项目的.project文件,保存,刷新工程。
    在<natures>
         …
      </natures>
   之间添加下列三行配置
<nature>org.eclipse.wst.common.project.facet.core.nature</n ......

JAVA GC

受到“15年你积累了什么”一文的震动,特别收集该文学习
Java gc
关键字: java gc, 垃圾回收机制
1.JVM的gc概述
  gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收 ......

java 解析公式类

package test;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 实现对字符串表达式进行简单的包括函数的运算。
 *
 * @auth ......

JAVA和PHP文件操作总结

JAVA文件操作总结
File类
File f = new File(path);
path为实际路径,该路径可以是文件,或文件夹,也可以是不存在的。
f.exists() 可以判断该路是否存在。
f.isDirectory() 可以判断是否是文件夹。
f.mkdirs(); 递归创建文件夹
File和输入输出流之间纽带FileInutStream,FileOutputStream
URL url = new URL(strUr ......

java各种排序方法

package org.rut.util.algorithm.support;
 
import org.rut.util.algorithm.SortUtil;
/**
 * @author treeroot
 * @since 2006-2-2
 * @version 1.0
 */
public class InsertSort implements SortUtil.Sort{
 
    /* (non-Javadoc)
     * ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号