美文网首页
2018-01-09学习内容

2018-01-09学习内容

作者: and天神 | 来源:发表于2018-01-09 14:26 被阅读0次

      类的生命周期:         1.加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象         2.连接,连接又包含三块内容:验证、准备、初始化。1)验证,文件格式、元数据、字节码、符号引用验证;2)准备,为类的静态变量分配内存,并将其初始化为默认值;3)解析,把类中的符号引用转换为直接引用         3.初始化,为类的静态变量赋予正确的初始值         4.使用,new出对象程序中使用         5.卸载,执行垃圾回收

 五.类加载器

        1.启动类加载器:Bootstrap ClassLoader,负责加载存放在JDK\jre\lib(JDK代表JDK的安装目录,下同)下,或被-Xbootclasspath参数指定的路径中的,并且能被虚拟机识别的类库

        2.扩展类加载器:Extension ClassLoader,该加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载DK\jre\lib\ext目录中,或者由java.ext.dirs系统变量指定的路径中的所有类库(如javax.*开头的类),开发者可以直接使用扩展类加载器。

        3.应用程序类加载器:Application ClassLoader,该类加载器由sun.misc.Launcher$AppClassLoader来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器

九.GC算法

    GC最基础的算法有三种:标记 -清除算法、复制算法、标记-压缩算法,我们常用的垃圾回收器一般都采用分代收集算法。

        1.标记 -清除算法,“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。

        2.复制算法,“复制”(Copying)的收集算法,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。

        3.标记-压缩算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存

        4.分代收集算法,“分代收集”(Generational Collection)算法,把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。

匿名内部类的使用:

匿名内部类是没有名字的类,只在某一处被使用,不会被多处调用,一般是某个父类或接口的特定实现。

强引用、软引用、弱引用和虚引用:

强引用: 一般的引用都是强引用,即使OutOfMemory也不会回收这部分被把持的引用内存。

软引用(SoftReference): 如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被使用。++软引用可以用来实现内存敏感的高速缓存。++

弱引用(WeakReference):弱引用的对象拥有更短暂的生命周期。当垃圾回收期发现只有若引用的对象,不论内存空间足够与否,都会回收它。

虚引用():虚引用不会决定对象的生命周期,如果一个对象仅持有一个虚引用,那么它随时可能被回收。++虚引用主要用来跟踪对象被垃圾回收器回收的活动。++

接口和抽象类有什么区别

2、抽象类要被子类继承,接口要被类实现。

3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现

接口里面的方法变量都是public的,但是抽象类 可以有自己的私有方法和实现 继承抽象类必须实现里面所有的抽象方法不然也会变成抽象类

final的用法(final变量一旦被初始化赋值之后,就不能再被赋值了):

可以用来修饰变量,类,方法;

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。

使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。“

因此,如果只有在想明确禁止 该方法在子类中被覆盖的情况下才将方法设置为final的。

对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象

  static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!

        对于变量,表示一旦给值就不可修改,并且通过类名可以访问。

        对于方法,表示不可覆盖,并且可以通过类名直接访问。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

泛型的使用:个人觉得是一种规范,类似标准的接口  定义泛型变量 可以做一些通用的类处理<?> 比起最早使用的object 更加优雅规范一些

spring 控制反转  面向切面:http://blog.csdn.net/luoshenfu001/article/details/5816408

相关文章

  • 2018-01-09学习内容

    类的生命周期: 1.加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Cla...

  • 《结网》

    start_time: 2018-01-09 end_time: ... 互联网产品经理 依据内容的时间跨度:战略...

  • 禁掉RecyclerView滑动时隐藏AppBarLayout的

    2018-01-09 遇到的一点小问题 . 之前通过CoordinatorLayout与AppBarLayout配...

  • 松涛

    2018-01-09 ——岁月如歌诗词选(274) 覌柯岩《周总理 您在哪...

  • 04_windows下安装sublime text 3并配置py

    时间:2018-01-09 00:02 作者:魏文应sublime text 3 python 一、安装环境: 操...

  • 丹心

    2018-01-09 ——岁月如歌诗词选(275) 观视频《1976年韩芝萍泪流满...

  • 金匾

    2018-01-09 ——岁月如歌诗词选(276) 观視频《郭兰英80高龄演唱:绣...

  • 学习内容

    语文学习d.t ,n,l ,g,k,h,j,q,x 数学学习了回答电视上的问题!还学的科学

  • 学习内容

    今天数学学了0-10书写,还学习了长方形、正方形还有球,语文学了6个单韵母和23个声母、还有整体认读

  • 学习内容

    今天数学学的一到六的合成,我学会了。语文学了几个复韵母,我学会了。回家去做作业啦!我做完啦。发一篇阅读我就睡觉啦。

网友评论

      本文标题:2018-01-09学习内容

      本文链接:https://www.haomeiwen.com/subject/vpjwnxtx.html