Fork me on GitHub

随笔分类 -  Java基础

摘要:同 它们都是Java的一个接口,都是用来实现集合中元素的比较、排序。 异 Comparator位于java.util下; Comparable位于java.lang下; Comparable(可比较的)是在集合内部定义的方法实现的排序。对象的本身已经拥有比较大小的能力; Comparator(比较器 阅读全文
posted @ 2016-08-21 15:07 郑斌blog 阅读(484) 评论(4) 推荐(1)
摘要:三种不同的用法 注意项: 1.在switch中使用枚举能使代码的可读性更强。 2.如果要自定义方法,那么必须在enum实例序列的最后添加分号。而且Java要求必须先定义enum实例。 3.所有的枚举都继承自java.lang.Enum类,由于Java不支持多继承,所以枚举对象不能再继承其他类。 4. 阅读全文
posted @ 2016-08-01 23:00 郑斌blog 阅读(550) 评论(0) 推荐(0)
摘要:概述 关键字synchronized的作用是实现线程间的同步。它的工作是对同步的代码加锁,使得每一次,只能有一个线程进入同步块,从而保证线程间的安全性。 直接作用于实例方法(普通同步方法):对当前实例加锁,进入同步代码前要获得当前实例的锁。 直接作用于静态方法(静态同步方法):对当前类加锁(当前类的 阅读全文
posted @ 2016-07-22 22:24 郑斌blog 阅读(1182) 评论(0) 推荐(1)
摘要:如何使用 概述 ConcurrentHashMap: 线程安全; 其将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁存在,那么在插入元素的时候就要先找到应该插入到哪一个片段segment,然后再在这个片段上面进行 阅读全文
posted @ 2016-07-19 16:53 郑斌blog 阅读(3676) 评论(0) 推荐(2)
摘要:类声明: 概述: 线程不安全; <Key, Value>两者都可以为null; 不保证映射的顺序,特别是它不保证该顺序恒久不变; HashMap使用Iterator; HashMap中hash数组的默认大小是16,增长方式一定是2的指数倍; HashMap的数据结构: 在Java语言中,最基本的结构 阅读全文
posted @ 2016-07-19 12:21 郑斌blog 阅读(1373) 评论(0) 推荐(1)
摘要:不管Java参数类型是什么,一律传递参数的副本。 《Thinking In Java》:“When you're passing primitives into a method,you get a distinct copy of the primitive.When you're passing 阅读全文
posted @ 2016-07-18 12:31 郑斌blog 阅读(942) 评论(0) 推荐(0)
摘要:1.for循环方法: 代码灵活,但效率低。 2.System.arraycopy()方法: 通过源码可以看到,其为native方法,即原生态方法。自然效率更高。 3.Arrays.copyOf()方法: 同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System. 阅读全文
posted @ 2016-07-14 18:32 郑斌blog 阅读(48701) 评论(0) 推荐(3)
摘要:在Java中一个类包括:构造块、构造方法、静态块、main方法、普通方法。 通过下面的例子将看出一个类中各种方法的执行顺序: 可以得出:首先JVM加载这个类(执行静态块)-》执行类的入口main方法-》构造块-》构造方法-》执行调用方法 如果有父类呢?JVM首先会检查当前类的父类是否加载,若没有则加 阅读全文
posted @ 2016-07-14 17:37 郑斌blog 阅读(1386) 评论(0) 推荐(0)
摘要:java.lang.Throwable:作为所有异常的超类; Exception(异常):分为 RuntimeException(运行时异常,不受检异常)和编译异常 运行时异常:表示 JVM 在运行期间出现错误,比如 NullPointerException、IndexOutOfBoundsExce 阅读全文
posted @ 2016-07-11 21:59 郑斌blog 阅读(543) 评论(0) 推荐(0)
摘要:一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步 阅读全文
posted @ 2016-07-08 22:50 郑斌blog 阅读(337287) 评论(42) 推荐(137)
摘要:一、装箱、拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱。而如果一个Integer对象被放到需要int型量的地方,则编译器将幕后插入一个队intValue方法的调用,这就叫做自动拆箱。 所以说,对于- 阅读全文
posted @ 2016-07-07 22:58 郑斌blog 阅读(833) 评论(0) 推荐(0)
摘要:三个主要的反射类 Class反射对象描述类语义结构,可以从Class对象中获取构造函数、成员变量、方法类等元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作。这些反射对象类在java.reflect包中定义,下面是最主要的三个反射类: Constructor:类的构造函数反射类,通过 阅读全文
posted @ 2016-07-01 16:06 郑斌blog 阅读(718) 评论(0) 推荐(0)
摘要:Java学了有两年了,要让详细说说JRE、JDK、JVM,确实不能脱口而出。下面在别人博客的基础上,总结一下。 JVM(Java Virtual Machine 即Java虚拟机) 它是整个Java实现跨平台的核心部分。所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机执行 阅读全文
posted @ 2016-06-30 17:51 郑斌blog 阅读(554) 评论(0) 推荐(0)
摘要:啥是泛型? 泛型(generic)是指参数化类型的能力。可以定义带泛型类型的类或方法,随后编译器会用具体的类型来代替它。 举个栗子 上述代码在编译期没有问题,但在运行期,将会报错。就是因为List的add方法的参数为Object,所以如果在程序员在不知道List类型时,通过强转获值,这时就会报错了。 阅读全文
posted @ 2016-06-28 10:48 郑斌blog 阅读(5202) 评论(3) 推荐(2)
摘要:首先,写好Java代码,保存到硬盘中。然后在命令行中输入: 此时,这个Java类文件将编译成字节码(.class)文件。如果用Eclipse等IDE开发工具,则当你保存代码的时候,这些开发工具已经完成了上述的手动编译工作,所以可以在对应的目录看到class文件。此时的class文件依然保存在硬盘中保 阅读全文
posted @ 2016-06-25 21:30 郑斌blog 阅读(412) 评论(0) 推荐(0)
摘要:关于'<<'与'>>'操作: m<<n,表示m二进制,右边尾部加0; m>>n,表示m二进制,右边尾部去掉1位; m>>>n,表示m二进制,忽略其符号位,从左至右,去掉最后的n位; 不存在'<<<'; 阅读全文
posted @ 2016-06-19 14:58 郑斌blog 阅读(665) 评论(0) 推荐(0)
摘要:1.final 2.finally 3.finalize 阅读全文
posted @ 2016-06-15 16:28 郑斌blog 阅读(560) 评论(0) 推荐(0)
摘要:static this final abstract instanceof super 阅读全文
posted @ 2016-06-15 14:41 郑斌blog 阅读(371) 评论(0) 推荐(0)
摘要:Java 关键字(如abstract)【详解】 String【相关面试题】 String、StringBuffer、StringBuilder区别 String中有没有使一个字符串反转的方法 线程的实现方式【多线程面试题】【多线程总结】 JVM GC原理(垃圾回收器的基本原理是什么?) 编译时的一些 阅读全文
posted @ 2016-06-13 18:00 郑斌blog 阅读(1003) 评论(0) 推荐(0)
摘要:final概念: 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父亲被继承。因此,一个类不能既被声明为abstract,又被声明为final。 将变量或方法声明为final,可以保证它们在使用中不被改变。其初始化可以在两个地方: 一是其定义处,也就是说,在final变量定义时直 阅读全文
posted @ 2016-05-31 09:00 郑斌blog 阅读(3488) 评论(0) 推荐(0)