摘要: 说到内存管理,笔者这里想先比较一下java与C、C++之间的区别: 在C、C++中,内存管理是由程序员负责的,也就是说程序员既要完成繁重的代码编写工作又要时常考虑到系统内存的维护 在java中,程序员无需考虑内存的控制和维护,而是交由JVM自动管理,这样就不容易出现内存泄漏和溢出的问题。然而,一旦出 阅读全文
posted @ 2017-10-17 21:18 Wilange 阅读(385) 评论(0) 推荐(1) 编辑
摘要: Set集合与List一样,都是继承自Collection接口,常用的实现类有HashSet和TreeSet。值得注意的是,HashSet是通过HashMap来实现的而TreeSet是通过TreeMap来实现的,所以HashSet和TreeSet都没有自己的数据结构,具体可以归纳如下: Set集合中的 阅读全文
posted @ 2017-10-09 17:29 Wilange 阅读(716) 评论(0) 推荐(0) 编辑
摘要: 这一节主要讨论Map接口的几个实现类的区别和用法。 1.线程安全 Hashtable是线程安全的(原因与StringBuffer、Vector相似),而其他的Map实现类都是非线程安全的,至于为什么,可以看之前的一些文章,前面已经介绍地很详细了。 这里特别讲解一下HashMap和Hashtable的 阅读全文
posted @ 2017-10-08 21:01 Wilange 阅读(533) 评论(2) 推荐(1) 编辑
摘要: java集合中Map接口的实现类有HashMap、Hashtable、LinkedHashMap和TreeMap,与List不同的是Map并不是继承自Collection接口。可以这样来理解它: Map提供key到value的映射,一个Map中不能包含相同的key,每个key只能映射一个 value 阅读全文
posted @ 2017-10-08 18:21 Wilange 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 这一节主要介绍List接口的几个实现类的区别: 1.线程安全 Vector是线程安全的,而ArrayList和LinkedList是非线程安全的。从源码中我们可知,Vector类中的方法大部分都是同步的,即被synchronized关键字修饰;而那些没有被synchronized关键字修饰的方法都是 阅读全文
posted @ 2017-10-08 11:21 Wilange 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 首先分析一下集合与数组的区别:1.java中的数组一般用于存储基本数据类型,而且是静态的,即长度固定不变,这就不适用于元素个数未知的情况;2.集合只能用于存储引用类型,并且长度可变,适用于大多数情况,可用toArray()方法转换成数组。 java语言提供了多种集合类的接口,如List、Set、Ma 阅读全文
posted @ 2017-10-06 18:25 Wilange 阅读(769) 评论(0) 推荐(1) 编辑
摘要: 之前面试的时候被问到有没有看过String类的源码,楼主当时就慌了,回来赶紧补一课。 1.构造器(构造方法) String类提供了很多不同的构造器,分别对应了不同的字符串初始化方法,此处从源码中摘录如下: 其中蓝色的实心三角表示no modifier(没有修饰符,friendly),表示只能被同一个 阅读全文
posted @ 2017-09-22 13:52 Wilange 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 4.线程安全与非安全 StringBuffer是线程安全的,而StringBuilder是非线程安全的,至于原因我们依然可以从它们的源码中找到。 StringBuffer类的部分源码 1 public synchronized int length() { 2 return count; 3 } 4 阅读全文
posted @ 2017-09-21 23:43 Wilange 阅读(2117) 评论(0) 推荐(1) 编辑
摘要: String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系(都是通过字符数组来实现的) 乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuffer和Strin 阅读全文
posted @ 2017-09-21 19:39 Wilange 阅读(8033) 评论(0) 推荐(1) 编辑