thinking in Java
文章平均质量分 78
json_it学习笔记
纸上得来终觉浅,绝知此事要躬行
展开
-
Java 接口知识点
1、创建接口,在接口关键字interface前面添加public关键字,如果不添加public关键字,则它只具有包访问权限,这样它就只能在同一个包内可用。接口可以包含域,但是这些域隐式地是static和final的。可以选择在接口中显式地将方法声明为public的,但即使你不这么做,它们也是public的。因此,当要实现一个接口时,在接口中被定义的方法必须被定义为是public的;否则,它们将只能原创 2017-07-07 14:15:47 · 410 阅读 · 0 评论 -
Java 泛型通配符解惑
T 有类型? 未知类型一、通配符的上界既然知道List并不是List的子类型,那就需要去寻找替他解决的办法, 是AnimalTrianer.act()方法变得更为通用(既可以接受List类型,也可以接受List等参数)。在Java里解决办法就是使用通配符“?”,具体到AnimalTrianer,就是将方法改为act(List<? extends Animal转载 2017-06-27 16:19:15 · 377 阅读 · 0 评论 -
Java 异常知识点
1、重新抛出异常:如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将是原来异常抛出点的调用栈信息,而并非重新抛出点的信息。要想更新这个信息,可以调用fiilInStackTrace()方法,这将返回一个Throwable对象,它是通过把当前调用栈信息填入原来那个异常对象而建立的。示例:try{...}catch(Exception e){e.prin原创 2017-07-05 16:42:28 · 324 阅读 · 0 评论 -
Java 泛型知识点
1、在你创建参数化类型的一个实例时,编译器会为你负责转型操作,并且保证类型的正确性。泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。示例:public class Holder{private T a;public Holder(T a){this.a = a;}public T get(){return a;}publi原创 2017-07-02 22:28:52 · 803 阅读 · 0 评论 -
Java 容器知识点(简)
1、加入Set的元素必须定义equals()方法以确保对象的唯一性。关于Set子类集合的元素顺序问题:HashSet以某种神秘的顺序保存所有的元素(O(∩_∩)O~)、LinkedHashSet按照元素的插入顺序保存元素、TreeSet按照排序顺序维护元素。2、除了并发应用,Queue在JavaSE5中仅有的两个实现是LinkedList和PriorityQueue。3、散列与散列码O原创 2017-06-11 10:23:23 · 578 阅读 · 0 评论 -
Java I/O 知识点(二)
1、标准I/O:按照Java标准I/O模型,Java提供了System.in、System.out、System.err。其中System.out、System.err已经事先被包装成了printStream,而System.in却是一个没有被包装的未经加工的InputStream。这意味着我们可以直接使用System.out、System.err,但是使用System.in的时候必须对其进行包装原创 2017-06-07 22:24:36 · 347 阅读 · 0 评论 -
Java I/O 知识点(一)
1、“流”屏蔽了实际I/O设备中处理数据的细节;Java类库中的I/O类分成了输入和输出两部分。任何自inputStream或Reader派生的而来的类都含有名为read()的基本方法,用于读取字节或字节数组。同样,任何来自outputStream或者Writer派生而来的类都含有名为write()的基本方法,用于写单个字节或者字节数组。但是,我们经常不会用到这些方法,它们之所以存在是因为别的类会原创 2017-06-03 17:12:36 · 582 阅读 · 0 评论 -
Java 枚举类型知识点
1、创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum;2、values():返回enum实例的数组;Enum类实现了Serializable接口和Comparable接口;name()方法返回enum实例声明时的名字,效果与toString()相同;valuesOf()是Enum的静态方法可以根据给定的名字返回相应的enum实例,如果不存在给定名字的实例,原创 2017-05-21 23:14:03 · 337 阅读 · 0 评论 -
Java 注解知识点
在Java中注解包含两部分:注解的定义和注解处理器。本篇只总结部分知识点,某些知识点不在其中,如需请自行阅读相关资料。1、注解的定义我们通过@interface定义注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface AnnotationName(){public原创 2017-05-21 10:45:18 · 404 阅读 · 0 评论 -
Java 并发编程知识点(四)
1、CountDownLatch:用来同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成。CountDownLatch初始化可以设置一个数值,任何在这个对象上调用await都将阻塞,直至计数值为0.其他任务结束其工作的时候,调用countdown()来减小这个计数值。注意:CountDownLatch的计数值一旦设置就不能再更改,如果需要能够更改计数值的版本,则可以使用CyclicBar原创 2017-05-16 22:35:13 · 278 阅读 · 0 评论 -
Java 并发编程知识点(一)
1、Thread.yield()含义:该方法的调用是对线程调度器(Java线程机制的一部分,可以将CPU从一个线程转移到另一个线程)的一种建议(只是一个暗示,没有任何机制保证他会被采纳,当调用yield()的时候,你也是在建议具有相同优先级的其他线程可以运行),它在声明:我已经执行完生命周期中最重要的部分,此刻正是切换给其他任务执行一段时间的大好时机。 2、Thread的start()方法:调原创 2017-05-07 16:35:29 · 345 阅读 · 0 评论 -
Java多线程 -- 多线程的异常捕捉
一、概述 为什么要单独讲多线程的异常捕捉呢?先看个例子:public class ThreadException implements Runnable{ @Override public void run() { throw new RuntimeException(); } //现象:控制台打印出异常信息,并运行一段时间后才转载 2017-05-07 14:31:47 · 406 阅读 · 0 评论 -
Java 并发编程知识点(三)
1、通过wait方法可以使线程挂起,直到线程得到notify或notifyall(等价于SE5中的signal或signalall)。在较早的代码中你可能会看到suspend和resume来阻塞和唤醒线程,但是现代Java已经废弃了这些方法。stop方法也已经被废弃了,因为它不释放线程获得的锁,并且如果线程处于不一致的状态(受损状态),其他任务可以在这种状态下浏览并修改他们,这样的问题是微妙的难以原创 2017-05-14 10:27:35 · 290 阅读 · 0 评论 -
Java 并发编程知识点(二)
1、线程组:线程组持有一个线程的集合。线程组的价值可以用如下的这段话概括:最好把线程组看成是一次不成功的尝试,你只要忽略它就好了。2、捕获异常:由于线程的本质特性,使得你不能捕获从线程逃逸的异常。一旦异常逃出任务的run方法,它就会向外传播至控制台,除非你采取特殊的步骤捕获这种异常。在SE5之前,你可以使用线程组来捕获这些异常,但是SE5之后,就可以使用Executor来解决这个问题,因此你就原创 2017-05-11 22:03:52 · 311 阅读 · 0 评论 -
Java 内部类知识点
1、当生成一个内部类的对象时,此对象与制造它的外围对象之间就有了一种联系,所以它能访问其外围对象的所有成员,而不需要任何条件。此外,内部类还拥有其外围类的所有元素的访问权。这是如何做到的呢?当某个外围类的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象的引用。然后,在你访问此外围类的成员时,就是用那个引用来选择外围类的成员。而这些所有细节,都是编译器帮你处理了。如原创 2017-07-06 15:58:17 · 544 阅读 · 0 评论