
Thinking in java
文章平均质量分 87
专注于java语言基础,细节,高级特性等。
SpeedMe
这个作者很懒,什么都没留下…
展开
-
java编程思想中总结的C++与java的区别
(1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。写作本书的时候,刚刚出现了一些准实时编译器,它们能显著加快速度。当然,我们完全有理由认为会出现适用于更多流行平台的纯固有编译器,但假若没有那些编译器,由于速度的限制,必须有些问题是Java不能解决的。(2) 和C++一样,Java也提供了两种类型的注释。(3) 所有东西都必原创 2014-04-05 16:07:03 · 5725 阅读 · 1 评论 -
c/c++和java实现swap函数的不同处
首先我们来看一下在c/c++中实现的swap函数void swap ( int & a, int & b) { int Temp; temp = a; a = b; b = temp; }那么在java中是否还能这样呢,很显然java中没有地址引用符号了。本质原创 2014-05-06 11:59:18 · 4430 阅读 · 0 评论 -
Java/C++中数组的区别
1. 数组名区别--------------------------------------1. java中不用说,本着一切皆对象的原则,所以java中的数组也是对象.那么数组类是哪个,当然不是java.util.Arrays.详见Java数组方法的思考2. 而在c++中数组名其实是一种数据结构,有人会说不是指针吗,关于这一点见(C++中数组名其实是一种数据结构)。从上面两点中我们原创 2014-04-04 16:10:49 · 9330 阅读 · 4 评论 -
最小化类和成员的访问能力
原文地址:http://leihuang.org/2014/11/17/minmize-accessibility/信息隐藏要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是,这个模块对于外部的其它模块而言,是否隐藏了内部的数据和其他的实现细节。换句话说,就是模块的设计者是否对其进行了良好的封装。对于顶层的(非嵌套的)类和接口,它们只有2种访问级原创 2014-11-17 00:58:05 · 1701 阅读 · 0 评论 -
Comparable和Comparator的区别
Comparable和Comparator都是用来实现集合中元素的比较、排序的,只是Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包 jav原创 2014-11-16 17:39:52 · 1924 阅读 · 0 评论 -
详解java中clone方法
原文地址:http://leihuang.org/2014/11/14/java-clone/In java, it essentially means the ability to create an object with similar state as the original object.什么是clone字典中的意思就是复制(强调跟原来的一模原创 2014-11-15 13:31:24 · 5426 阅读 · 0 评论 -
super.getClass()与this.getClass()
原文地址:http://leihuang.org/2014/11/14/getClass-method/首先看一段代码:import java.util.Date;public class Test extends Date{ public static void main(String[] args) { new Test().test()原创 2014-11-15 13:29:11 · 4215 阅读 · 0 评论 -
java对象的生命周期
原文地址:http://leihuang.net/2014/11/13/Object-Lifecycle/什么是对象对象是数据和行为的集合对象是类的一个实例对象有状态和行为创建对象使用new关键字创建对象是java中最常见的一种方法。对象生命周期CreatedIn useInvisibleUnreachableCollectedFin原创 2014-11-15 13:27:03 · 1591 阅读 · 0 评论 -
java对象循环依赖问题
原文地址:http://leihuang.net/2014/11/13/Cycular-Dependency/假设我们有一个类A,它包含了一个B的对象,同时类B也包含了一个A对象。那么此时不管你实例化哪一个类,都会出现StackOverflowError错误,这就是java对象循环依赖问题。类似于鸡和蛋的问题。首先我们看下面这段错误的代码,分析其错误的地方。pu原创 2014-11-15 13:26:02 · 8052 阅读 · 1 评论 -
禁止使用finalize方法
原文地址:http://leihuang.net/2014/11/13/Avoid-Finalizers/Don´t use Finalizers, mainly because are unpredictable and we don´t know when will be executed, "don't try to be smarter than the JVM"原创 2014-11-14 16:23:41 · 2878 阅读 · 0 评论 -
java内存泄露
原文地址:什么是内存泄露当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃圾收集器不能释放它们。下图中就是内存泄露的情形。 图中的中间部分就是内存泄露的发生地。为什么会内存泄露让我们来分析一下下图中的例子,看看为什么会发生内存泄露。对象A时B的引用。A的生命周期时t1-t4,而B的生命周期时t2-t3.所以当B原创 2014-11-14 16:21:34 · 1626 阅读 · 0 评论 -
不要创建非必要对象
原文地址:http://leihuang.org/2014/11/10/avoid-creating-unnecessary-objects/首先我们来看下面两个语句的区别:String s = new String("hello world!") ;String s = "hello world!" ;当你循环调用上面两个语句的时候,你会发现:第一条语原创 2014-11-14 16:20:07 · 1129 阅读 · 0 评论 -
java集合类TreeMap和TreeSet
看这篇博客前,我觉得很有必要先看下我之前的几篇博客Red-Black Trees(红黑树) (TreeMap底层的实现就是用的红黑树数据结构)探索equals()和hashCode()方法 (TreeMap/TreeSet实现使用到的核心方法)原创 2014-03-31 15:29:24 · 31396 阅读 · 3 评论 -
java中的HashTable,HashMap和HashSet
上篇博客中我们详细的分析了java集合《java中Map,List与Set的区别》。同时我们也对HashSet和HashMap的核心方法hashcode进行了详解,见《探索equals()和hashCode()方法》。万事俱备,那么下面我们就对基于hash算法的三个集合HashTable,HashSet和HashMap详解。本文目录:1. HashTable和Has原创 2014-03-30 21:16:27 · 22550 阅读 · 6 评论 -
探索equals()和hashCode()方法
如果你现在还对hashcode了解甚少的话,建议你先看看下面两篇博客,绝对有用,面试中经常问这些。《java中Map,List与Set的区别》《05.Hash Tables(哈希表)》equals()和hashCode()区别?-------------------------------------------------equals():反映原创 2014-03-30 03:30:07 · 7986 阅读 · 1 评论 -
java中Map,List与Set的区别
Set,List,Map的区别java集合的主要分为三种类型:Set(集)List(列表)Map(映射)要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存原创 2014-03-28 15:51:58 · 251322 阅读 · 51 评论 -
java中的static和final
一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 final成员变量表示常量,只能被赋值一次,赋值后值不再改原创 2014-03-20 00:02:00 · 6025 阅读 · 856 评论 -
《Thinking In Algorithm》01.Array与ArrayList的区别(java)
1)一句话概括: ArrayList想象成一种“会自动扩增容量的Array”,Array大小不能变。2)Array([]):最高效;但是其容量固定且无法动态改变; ArrayList: 容量可动态增长;但牺牲效率;3)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时才使用ArrayList!不过当你试着解决更一般化的问题时,Array的功能原创 2014-01-07 20:48:13 · 4005 阅读 · 1 评论 -
java内部类引用外部类的变量时必须是final变量
每次android的触发事件时总是遇到内部类中不能调用外部类的非final变量。。但不知道什么原因,然后今天看到一个帖子上的跟们说的不错。知道原来是关于类的生命周期的问题。我的解决方法是将方法内的方法定义到方法外部来。。 今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来想到应该是生命周原创 2012-10-05 16:15:43 · 2642 阅读 · 1 评论