摘要:
Collection接口 Collection接口继承了Iterable接口,在Conllection接口中,有以下抽象方法: int size();返回集合中元素个数。 boolean isEmpty();返回集合是否为空。 boolean contains(Object o);返回集合内是否有元 阅读全文
摘要:
包装类 由于基本数据类型不是对象,java在像处理对象一样处理基本数据类型时,需要通过相应的包装类进行类型转换。 Integer类是基本数据类型int的包装类,是lang包下的类,继承了Number类,实现了Comparable<Integer>接口。 Integer类中的成员变量有: public 阅读全文
摘要:
StringBuffer类是lang包内的类,继承与AbstractStringBuilder,实现了java.io.Serializable和CharSequence接口。 AbstractStringBuilder类中的成员变量有:char[] value;字符数组中存储字符串对象的值,int 阅读全文
摘要:
String是Java.lang包下的final类,其值是不可以改变的。String类实现了java.io.Serializable,Comparable<String>,CharSequence 这三个接口。 java.io.Serializable 接口是 序列化接口,实现此接口的类,可以序列化 阅读全文
摘要:
虚拟机吧描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化、最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类从被加载到虚拟机内存开始,到卸载出内存为止,他的生命周期包括:加载、验证、准备、解析、初始化、使用、卸载这7个阶段。 除了解析阶段以外,其他阶 阅读全文
摘要:
JVM所能识别的文件是Class文件,又叫字节码文件。 Class类文件结构 Class文件是一组以8位字节为基础单位的二进制流,在Class文件中只有两种数据类型:无符号数和表。 无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。 表是由多个无符号数或者其他表作为数据项 阅读全文
摘要:
对象死亡过程 一个对象的真正死亡,至少要经过两轮标记 判定对象死亡后,进行第一次标记,并进行筛选,筛选条件:有没有必要执行finalize()。对象没有覆盖finalize()或者覆盖的finalize()已经执行过,都视为没有必要执行finalize()。 如果没有必要执行finalize(),稍 阅读全文
摘要:
JVM下的内存分布: 1.程序计数器:每一个线程都有一个程序计数器,执行java方法时,计数器存放着正在执行的虚拟机字节码指令的地址,执行Native方法时,计数器为空。 2.栈:线程私有,生命周期与线程的生命周期相同,内存空间在编译期完成分配,运行时不会改变。 3.堆:堆是被所有线程共享的一块内存 阅读全文
摘要:
一个线程有五种状态: 新建状态:使用 new 关键字后,线程处于新建状态。 就绪状态:使用start()后线程进入就绪状态,sleep()结束之后线程进入就绪状态,join()结束之后线程进入就绪状态,I/O完成后线程进入就绪状态,notify()或notifyAll()之后线程进入就绪状态,int 阅读全文
摘要:
并发对于程序来讲,并不安全。 多个线程同时对一个共享资源进行读写时,可能会发生错误。 如何避免这样的问题? 1.synchronized关键字 被synchronized关键字修饰的域,将被“上锁”,在程序执行这段代码时,只能有一个线程执行这段任务,在该线程没有执行完成之前,其他线程将等待该线程执行 阅读全文