
java语法
文章平均质量分 79
upwind_fly
这个作者很懒,什么都没留下…
展开
-
java静态代码分析工具FindBugs
在写java程序时,难免遇到空指针的错误,而且此类错误较隐蔽,难以发现,比如忘记给变量实例化,或者从数据库取到的数据集没有获取到都会引发空指针错误。为了解决这些难以发现的问题,可以用java静态代码分析工具FindBugs进行排查,类似的工具还有Checkstyle,FindBugs,PMD,Jtest。如下面的例子程序,在java文件上右击find bugs->find bugs会出原创 2015-12-24 13:35:38 · 426 阅读 · 0 评论 -
synchronized关键字锁住的是对象还是代码块
synchronized 修饰的是对象,而不是代码块。测试代码来自于博客http://www.cnblogs.com/QQParadise/articles/5059824.html 下面两端代码都可以正常显示执行结果:test开始..test结束..test开始..test结束..test开始..test结束..第一段代码锁住了Sync这个类对象(取决于static关键字),而第二段也原创 2017-06-13 16:19:07 · 893 阅读 · 0 评论 -
java并发编程实战读书笔记
1 Java关键字final static http://lavasoft.blog.51cto.com/62575/18771 2 Java并发编程:volatile关键字解析 http://www.cnblogs.com/dolphin0520/p/3920373.html原创 2017-06-15 11:12:30 · 273 阅读 · 0 评论 -
LinkedList源码阅读
同样LinkedList的底层也是基于一种数据结构的,这个结构是双向循环链表,在简书上看到一篇文章分析很详细,基于jdk1.6,链接如下: LinkedList源码解析 但是在jdk1.7中,LinkedList是一种双向链表,非循环,但是增加了指向了最后一个节点和指向第一个节点的指针。 1 LinkedList成员变量和构造函数public class LinkedList<E> e原创 2017-04-21 10:49:28 · 252 阅读 · 0 评论 -
ConcurrentHashMap源码实现
concurrentHashmap和HashMap的区别: concurrentHashmap和HashMap大多数下的使用场景基本一致,但最大的区别就是concurrentHashmap是线程安全的HashMap不是,在并发的场景下HashMap存在死循环的问题。可以参见博客https://juejin.im/entry/5884f1a7128fe1006c3b6aac concurrentH原创 2017-06-15 17:34:25 · 278 阅读 · 0 评论 -
内部类初始化
单例模式中常用的一种饿汉模式实现是用内部类实现的,但是并不理解为什么是饿汉,不是懒汉呢,于是写了下面的测试程序,得到结果:并不是InnerClass外部类初始化,其内部类JobSchedulerHolder就初始化。public class InnerClass{ private static class JobSchedulerHolder{ private static Inne原创 2017-04-27 16:42:38 · 773 阅读 · 0 评论 -
GC发生时内存分配和回收策略
在《深入理解java虚拟机》一书中读到3.6章节,内存分配和回收策略: 预备知识 java堆=年轻代(Eden+Survivor+Survivor)+老年代 Eden:Survivor:Survivor默认比例8:1:1,每次年轻代使用率90%(Eden和一个Survivor)。 一 内存分配策略 1 对象优先在eden分配 可用空间是Eden和一个Survivor,在GC回收发生时,如原创 2017-04-25 16:56:42 · 351 阅读 · 0 评论 -
java语法随笔
执行顺序 父类静态代码块->子类静态代码块->父类动态代码块->父类构造方法->子类动态代码块->子类构造方法 父类对象指向子类对象,只能调用父类中定义的方法,如被重写,则执行子类的方法,如果调用没有定义的方法,则编译出错。class Father{ private String name = "Father"; static { System.out.print原创 2017-05-04 14:46:53 · 217 阅读 · 0 评论 -
String源码阅读
1 为什么String是不可变对象,而StringBuffer是可变对象,而StringBuffer的初始长度是多少? 可以由源码得到 String的char数组是final类型,所以一旦初始化就不可变,StringBuffer的初始长度是16 public final class String{ private final char value[]; /** Cache the hash原创 2017-04-19 14:42:06 · 332 阅读 · 0 评论 -
java中的弱引用和字符串常量池
java中的弱引用和字符串常量池原创 2016-10-12 11:10:01 · 1021 阅读 · 2 评论 -
java父类对象指向子类对象
package com.javabase;/** * 当父类中的一个方法只有在父类中定义而在子类中没有重写的情况下, * 才可以被父类类型的引用调用; 对于父类中定义的方法,如果子类中重写了该方法, * 那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。 而在父类中没有的方法, * 但是在子类中有,那么父类不能调用这个方法。 * @author abc * */class原创 2016-10-21 17:05:24 · 476 阅读 · 0 评论 -
JAVA是值传递还是引用传递
前言在学习Java编程语言过程中最容易让你产生误解的问题之一就是 java是值传递还是引用传递。今天就来围绕这个话题揭开迷雾。概念首先先来认识一下什么是值传递什么是引用传递。值传递: 将方法实际参数值复制到另一个变量,然后复制的对象被传递,这就是为什么它被称为“值传递”引用传递:将实际参数的引用传递给该方法,这就是为什么它被引用称为“传递”的原因。例子分析1问题:如果java是使用引用传递的话,为什转载 2016-10-24 14:04:04 · 354 阅读 · 2 评论 -
HashMap源码阅读
1 HashMap设计思想 我们在使用HashMap时,都知道这是key-value的存储形式,那么怎么做到key不重样,又能根据key很快的找到对应的value值呢,怎么才能做到很快的插入一个元素呢?这些需求驱动了HashMap的设计,HashMap的源码实际上是实现了哈希表这种数据结构,我们在数据结构课中学过,数组和链表是两种基本的数据结构,数组的特点是空间连续(大小固定)、寻址迅速,但是插入原创 2017-04-20 11:16:46 · 263 阅读 · 0 评论