深入理解java
瓶子的罐子
这个作者很懒,什么都没留下…
展开
-
3.访问修饰符
1)仅对本类可见——private2)对所有类可见——public3)对本包和所有子类可见——protect4)对本包可见——默认原创 2015-09-29 10:48:19 · 295 阅读 · 0 评论 -
java访问修饰符
protectedprotected表示被其修饰的成员可以被本类, 同包下的所有类, 以及本类的所有子类所访问。这里的子类可以在其它包下。package jvmSrgumens;//当前包下public class Test1 { protected int a=9;}package jvmSrgumens;//当前包下的子类public class Tesy3 extends T原创 2017-07-27 17:01:51 · 233 阅读 · 0 评论 -
JVM学习笔记(三)垃圾收集算法
Java虚拟机JVM垃圾收集算法有四种:标记-清除算法、复制算法、标记-整理算法以及分代收集算法。标记-清除算法这是JVM最基础的垃圾收集算法。如下图: 该算法分为两个阶段:“标记”和“清除”。首先标记处所有需要回收的对象,然后统一清除被标记的对象。 该算法,标记和清除两个阶段的效率不高。此外,回收后会产生大量的不连续的内存碎片,分配较大对象时,无法找到足够大连续内存,进一步转载 2017-07-10 10:40:06 · 241 阅读 · 0 评论 -
JVM学习笔记(二)jvm类加载机制
类加载过程 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)原创 2017-05-25 22:44:10 · 291 阅读 · 0 评论 -
JVM学习笔记(一)运行时数据区
运行时数据区 java虚拟机在执行java程序的过程中会把所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程的启动而存在,随虚拟机进程的退出而销毁;有的区域则依赖用户线程的启动和结束而建立和销毁。java虚拟机所管理的内存将会包括以下几个运行时数据区域程序计数器 程序计数器(Program Counter Register)原创 2017-05-11 22:54:13 · 420 阅读 · 0 评论 -
JVM学习笔记(四)垃圾收集器
CMS收集器CMS(Concurrent Mark Sweep年老代)年老代收集器。采用 ”标记-清除“算法,可以通过设置参数在垃圾回收时进行内存碎片的整理。 1、UserCMSCompactAtFullCollection:默认开启,FullGC时进行内存碎片整理,整理时用户进程需停止,即发生Stop The World 2、CMSFullGCsBeforeCompaction:设置执行多原创 2017-07-10 17:38:10 · 302 阅读 · 0 评论 -
JVM学习笔记(四)对象已死吗
堆中存放着java中几乎所有的对象实例,垃圾收集器在堆堆进行回收前,首先要确定这些对象哪些还“活着”,哪些已经“死去”。有如下两种方法:引用计数算法 为对象添加一个引用计数器,每当有一个地方引用该对象时,则该引用计数器值加1,;当引用失效时,则该引用计数器值减1;最后,计数器为0的对象就是不可能再被使用的,也即所谓的“死去”的对象。 Java虚拟机中并没有选用引用计算算法来管理内存,主要原因是很原创 2017-07-10 12:36:14 · 274 阅读 · 0 评论 -
Map集合的三种遍历方式
package day20;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;public class MapTraverse { public static void main(String[]原创 2015-12-06 22:05:16 · 7516 阅读 · 0 评论 -
2.强制类型转换
1.进行强制类型转换的原因:在暂时忽视对象的实际类型之后,使用对象的全部功能。2.将一个子类的引用赋给一个超类的变量,编译器是允许的(向上类型转换)。但将一个超类的引用赋给一个子类变量,必须进行强制类型转换(向下类型转换)。3.在进行类型转换之前,先查看一下是否能够成功的转换if (person instanceof Student){//向下类型转换student = (原创 2015-09-29 10:43:31 · 425 阅读 · 0 评论 -
1.阻止继承:final 类和方法
1.将一个类声明为final类,类中的方法也可以声明为final类final class person{...public final String getName(){return name;}...}2.声明为final的类不允许被继承,声明为final的方法不允许被子类覆盖。目的:确保他门不会在子类中改变语义。例如,String类是final类,意味着原创 2015-09-29 10:22:12 · 480 阅读 · 0 评论 -
4.枚举类
枚举的一个典型的例子public enum size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};可以在枚举类中添加一些构造器,方法和域。java核心技术中给出了一个很好的例子。 import java.util.Scanner;public class EnumTest { public static void main(String[] ar原创 2015-09-29 15:13:52 · 411 阅读 · 0 评论 -
Thread的run()与start()的区别
java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。转载 2017-10-23 15:21:57 · 280 阅读 · 0 评论