Thinking in java
SunsetFeng
这个作者很懒,什么都没留下…
展开
-
Thinking in java自读笔记:equals方法的比较
1.在java中equals方法的比较 “主类型”的比较可以简单的使用运算符”!=”或者“==”进行比较,在进行对象的比较时,如果没有重写equals方法,则默认比较的是对象的”句柄”,即判断对象地址是否相等。简单比较如下:class MyObject{ int num;}public class Test{ public static void main(Strin...原创 2018-09-11 20:40:53 · 131 阅读 · 0 评论 -
Thinking in java:RTTI和反射机制
摘抄别人的一句话:要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息一.RTTI为理解RTTI在Java里如何工作,首先必须了解类型信息在运行期是如何表示的。这时要用到一个名为“Class对象”的特殊形式的对象,其中包...原创 2018-09-14 16:17:56 · 177 阅读 · 0 评论 -
Thinking in java自读笔记:传递对象与克隆
前提:对于常规数据类型而言,可以分为值类型和引用类型,值类型为我们常说的”主类型”,”值类型”直接将内存存储在栈内,由系统自动释放资源的数据类型;引用类型是由类型的实际值引用(类似于指针)表示的数据类型,即一个在栈上的引用指向一个在堆上的实例的类型。一.值的传递当将应用类型和值类型作为参数进行传递时,会制作一个本地副本(引用类型我认为也是有一个副本,只不过是引用的副本),以下为2种情形...原创 2018-09-14 11:09:35 · 143 阅读 · 0 评论 -
Thinking in java自读笔记:常用输入输出流
这次总结以用法为主,涉及的深入原理暂不理会1 继承与InputStream的常用输入流 (1). 文件输入流FileInputStream (2). 管道输入流PipedInputStream (3). 缓冲输入流BufferedInputStream (4). 合并输入流SequenceInputStream (5). 对象输入流ObjectInputStream (...原创 2018-09-13 19:53:07 · 139 阅读 · 0 评论 -
关于java原码,补码,反码和移位运算的一些总结
整数的原码,补码,反码是一致的 负数的反码=原码取反(符号为不变) 负数的补码=负数的反码+1; 重点:在JAVA里,使用8进制和16进制给一个int值赋值时,是直接存的补码!!!并且运算时也是采取补码的形式运算。 下面为测试例子: 0x82表示为2进制:10000010,如果0x82是原码的话,那么输出应该为-2,如果0x82为补码,那么原码为11111110,输出应该为-126。...原创 2018-09-13 15:09:00 · 2049 阅读 · 1 评论 -
Thinking in java自读笔记:HashMap,TreeMap和Hashtable
HashMap于HashTable的异同: 相同点:HashMap和Hashtabel的存储元素都是键值对,实现原理都是哈希表。 主要不同点: 1.继承父类不同,Hashtable继承与Dictionary(已废弃),HashMap继承于AbstractMap 2.Hashtabel是线程安全的,HashMap是非线程安全的,不过如今即便使用多线程也不推荐使用Hashtabel,可以使用C...原创 2018-09-13 11:30:56 · 186 阅读 · 0 评论 -
Thinking in java自读笔记:HashSet与TreeSet
Set集合不能存入相同的元素,HashSet是根据equals()与hashCode()方法来判定元素是否相同,TreeSet是根据compareTo()方法来判定元素是否相同,也可以根据compare方法来判定,因为compareTo()和compare()方法并不定义于根类,因此要使用TreeSet必须实现compareTo()方法或者compare方法。TreeSet可以得到一个顺序列表,H...原创 2018-09-12 21:01:52 · 108 阅读 · 0 评论 -
Thinking in java自读笔记:Iterator的实现
迭代器是一种比较“轻量级”的对象,因为创建代价较小,而且比较方便,因此都喜欢使用迭代器来遍历集合,但不建议使用迭代器来删除元素下面进行分析一下迭代器的3个主要方法: 1.Iterator.hasNext() public boolean hasNext() { return nextIndex < size; }这个较为简单...原创 2018-09-12 19:44:25 · 129 阅读 · 0 评论 -
Thinking in java自读笔记:内部类
首先推荐一篇内部类讲解详细的博客地址:https://www.cnblogs.com/dolphin0520/p/3811445.html一.内部类的四种类型成员内部类局部内部类匿名内部类静态内部类(一)成员内部类是最普通的内部类,直接在一个外部类里面定义一个成员类(即内部类)。class OutClass{ class InnerClass { ...原创 2018-09-12 16:25:25 · 124 阅读 · 0 评论 -
Thinking in java自读笔记:finalize()方法的作用
关于finalize与垃圾回收的两个注意点: (一)finalize是在垃圾回收之前被调用,但不一定会被调用 (二)垃圾回收只与内存有关一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。但值得注意的一点是,并不是所有的废弃对象都会被垃圾收集器收集,如果不是内存即将耗尽,垃圾收集器不会去自动释放内存,因为释放内...原创 2018-09-12 11:58:37 · 188 阅读 · 0 评论 -
Thinking in java自读笔记:标签的使用
在java中,虽然没有使用goto的程序控制结构,但依旧能在break和contine中看到一些goto的影子,这就是标签。标签的声明方式如:Lable1: 测试代码如下:public class Test{ public static void main(String[] args) { int i=0; outer: wh...原创 2018-09-11 21:15:25 · 95 阅读 · 0 评论 -
Thinking in java:多线程
关于多线程,看了许多大佬的帖子,自己也思索了很久,虽然许多地方还是不清楚,但还是有必要记录一下自己的所得。首先贴上状态图:(1)New:创建一个线程时,线程进入这个状态(2)Runnable:调用start()后,进入这个状态(3)Running:执行run()时,进入这个状态(4)Blocked:阻塞状态,分3种情况等待阻塞:调用wait()后进入等待阻塞。 同步阻...原创 2018-09-15 10:56:50 · 171 阅读 · 0 评论