java知识总结,不定时更新

1,类基本加载流程(ClassLoader)

a,当一个程序启动时,jvm启动,运行 bootstrap classloader,加载java核心API(ExtClassLoader 和 AppClassLoader也在此时被加载)

b,调用ExtClassLoader加载扩展API

c,最后AppClassLoader 加载CLASSPATH目录下定义i的Class

分为三步

装载,找到class读入jvm

连接,分为验证,验证class是否合格

                  准备,为类变量分配内存设置默认初始值

                  解释,(可选,loadClass加载不需要)根据类中符号引用查找对应的实体,把符号引用转换为直接引用

初始化,class文件初始化(loadClass加载不进行)

注意:ClassLoader具备层次关系;ClassLoader不止一个种类;不同的类装载器分别加载同一个类class文件,得到的是不同的对象,没有任何关联;利用父类委托机制避免重复加载,消除安全隐患(避免核心API被替代);class.forName()加载类和jvm加载类loadClass()不同,class.forName()调用class.forName(name,initialize,loader),相当于class.forName(“”,true,CALLCLASS.class.getClassLoader())。loadClass()加载类不需要对该类解释,因此不需要初始化该类


2,JVM使用哪种字符表示

Unicode characters(不使用任何编码,直接使用他们在字符集中的编号)


3,静态代码块里定义的变量属于局部变量

class a{.

static{

int x=1;

}

static int x;//如果输出x,x=0

}


4,j=j++问题,java缓存变量机制

int j=0;

j=j++;

即 第一步,j(新)=j(旧)+1

     第二步,j(真正)=j(旧) 

所以不管执行多少次

j都等于0

如果两步颠倒(假设)就变成只少生效一次j++

5,java数据类型

三大类 字符 布尔 数值

8种 char boolean 整型byte short int(默认) long 浮点型 float double(默认)

常用String Date属于类变量

+运算符不能用于boolean,其他相加会按照char-整型-浮点型-字符串精度自动向上转

0开头代表八进制

0X开头代表十进制

short s=1;s=s+1;s+1提升到int,int转换short要强转

short s=1;s+=1;+=会自动转换


6,main方法,接口特点

main修饰符必须是public static void 

接口成员变量默认public、static、final 可以省略,但不能写其他的

方法默认public、abstract 可以省略,不能写其他


7,





你可能感兴趣的:(java,java)