Rx操作符
摘要:【Rx操作符】 1、Observable.from()方法,它接收一个集合作为输入,然后每次输出一个元素给subscriber: 2、Observable.flatMap()接收一个Observable的输出作为输入,同时输出另外一个Observable。直接看代码: 3、getTitle()返回n
阅读全文
Java泛型
摘要:【Java泛型】 1、(2)以下的泛型转换,不正确,是一种编译错误。 Let's test your understanding of generics. Is the following code snippet legal? List<String> ls = new ArrayList<Str
阅读全文
Java KeyNote
摘要:【Java KeyNote】 1、把一个ArrayList拷贝到另一个ArrayList。 ArrayList list1=new ArrayList(); ArrayList list2=new ArrayList(); list1.addAll(list2); 2、数字转换为String Str
阅读全文
Java 匿名内部类
摘要:【Java 匿名内部类】 参考:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html
阅读全文
Java线程新特征之同步
摘要:【锁】1、普通锁。 importjava.util.concurrent.locks.Lock; importjava.util.concurrent.locks.ReentrantLock; Lock lock =newReentrantLock(); myLock.lock(); myLock.unlock();2、读写锁。 Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。 importjava.util.concu
阅读全文
Java线程新特征之有返回值的线程
摘要:【有返回值的线程】1、可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。2、执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。【实例】
阅读全文
Java线程新特征之线程池
摘要:【线程池】1、固定大小线程池 importjava.util.concurrent.Executors; importjava.util.concurrent.ExecutorService; ExecutorService pool = Executors.newFixedThreadPool(2); pool.execute(t1); pool.shutdown();2、单任务线程池 ExecutorService pool = Executors.newSingleThreadExecutor();3、可变尺寸线程池 ExecutorService pool = Executors.ne
阅读全文
Java之线程初步II
摘要:【线程的交互】1、wait()、notify()、notifyAll()。 注:必须从同步环境内调用wait()、notify()、notifyAll()方法。 Notify是瞬间的事件,不是持续性事件。如果在wait()前调用了notify(),对wait没影响,也意味着wait将永远等待。2、Thread.sleep()。线程休眠。【守护线程】 方法:setDaemon(true) 注:JRE判断程序是否执行结束的标准是所有的前台执线程行完毕了,而不管后台线程的状态。【其它】 关键字:volatile
阅读全文
Java之线程初步
摘要:【定义线程】1、扩展java.lang.Thread类,实现run()方法,直接调用start()方法。2、实现java.lang.Runnable接口,然后传递给Thread对象,调用start()方法。【线程模型】 每个线程有一个自己的栈。【线程的状态】1、线程睡眠是帮助所有线程获得运行机会的最好方法。sleep()是静态方法,只能控制当前正在运行的线程。2、线程的让步是通过Thread.yield()来实现的。线程优先级为1~10之间的正整数。 线程默认优先级是5,Thread类中有三个常量,定义线程优先级范围: static int MAX_PRIORITY 线程可以具有的最高优先级。
阅读全文
Java之Final关键字
摘要:【Final关键字】 1、final类不能被继承,没有子类,final类中的方法默认是final的。 2、final方法不能被子类的方法覆盖,但可以被继承。 3、final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 (对应C++中的const) 4、final不能用于修饰构造方法。 【为什
阅读全文
Java vs C++ 之多态
摘要:【Java Vs C++ 之多态】 1、《Effective C++》第9条:绝对不要要构造和析构过程中调用虚函数。这个条款作为C++开发人员的圣经,经常作为面试题。但在Java中,这个东西可以抛诸脑后了,Java中想咋调就咋调。 2、Java中不管写不写abstract,类函数都是多态的。 3、C
阅读全文
Java之接口
摘要:【接口】1、接口本身,可以被声名为public,或者默认包访问。(即可见性和一般类完全相同)。2、类方法自动声明为且只能为public,但是当一个类实现某个接口,定义接口的方法时,必须且只能声明为public,否则编译将通不过。3、接口不能实现方法(implement method),只能声明,且不能有静态方法(static method)。接口可以只定义常量但不声明任何方法,变量自动设为public static final。4、不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用 instanceof 检查一个对象
阅读全文
Java vs C++
摘要:【Java胜过C++的几个特性】 1、Java的数据均会初始化为0,并且有指针越界检查。 2、Java的垃圾收集制,轻松解决了困扰C++程序员的恶梦--生命周期管理。 3、Java消息了“前向引用”的问题。 4、Java没有析构函数也没有delete函数。 5、Java没有头文件,简化管理复杂性。
阅读全文
Java之访问控制
摘要:【类成员访问控制】 1、private访问控制 如果一个成员方法或成员变量名前使用了private访问控制符,那么这个成员只能在这个类的内部使用 2、缺省访问控制 果一个成员方法或成员变量名前没有使用任何访问控制符,我们就称这个成员是缺省的(default),或是友元的(friendly),或是包类型的(package)。对于缺省访问控制成员,可以被这个包中的其他类访问,如果一个子类与父类位于不同的包中,子类也不能访问父类中的缺省访问控制成员。 3、protected访问控制 如果一个成员方法或成员变量名前使用了protected访问控制符,那么这个成员即可以被同一个包中的其他类访问,也可以被
阅读全文
Java之为什么没有条件编译
摘要:【为什么没有条件编译】 Java 已取消的一种特性是C 的“条件编译”,它允许我们改变参数,获得不同的行为,同时不改变其他任何代码。Java 之所以抛弃了这一特性,可能是由于该特性经常在C 里用于解决跨平台问题:代码的不同部分根据具体的平台进行编译,否则不能在特定的平台上运行。由于Java 的设计思想是成为一种自动跨平台的语言,所以这种特性是没有必要的。 我想说的是,条件编译不仅仅用于解决跨平台问题!
阅读全文
Java之检查对象是否相等
摘要:【检查对象是否相等】 关系运算符==和!=也适用于所有对象,但它们的含义通常会使初涉Java 领域的人找不到北。 下面是一个例子: 其中,表达式System.out.println(n1 == n2)可打印出内部的布尔比较结果。一般人都会认为输出结果肯定先是true,再是false,因为两个Integer 对象都是相同的。但尽管对象的内容相同,句柄却是不同的,而==和!=比较的正好就是对象句柄。所以输出结果实际上先是false,再是true。这自然会使第一次接触的人感到惊奇。【该怎么做】 若想对比两个对象的实际内容是否相同,又该如何操作呢?此时,必须使用所有对象都适用的特殊方法equals()
阅读全文
Java之哪些情况下变量不会初始化
摘要:【哪些情况下变量不会初始化】 将变量作为类成员使用,就要特别注意由Java 分配的默认值。这样做可保证主类型的成员变量肯定得到了初始化(C++不具备这一功能),可有效遏止多种相关的编程错误。然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中写入下述代码: int x; 那么x 会得到一些随机值(这与C 和C++是一样的),不会自动初始化成零。 我们责任是在正式使用x 前分配一个适当的值。如果忘记,就会得到一条编译期错误,告诉我们变量可能尚未初始化。这种处理正是Java优于C++的表现之一。许多C++编译器会对变量未初始化发出警告,但在Java 里却是
阅读全文
Java之不允许变量重定义
摘要:【不允许变量重定义】 在C/C++里,上述是对的,在Java里,编译不通过。Java设计者认为,上述代码有可能混淆读者对程序的理解,非常危险。
阅读全文
Java之数组
摘要:【数组】 Java 的一项主要设计目标就是安全性。Java 可以保证被初始化,并且不可在它的范围之外访问。由于系统自动进行范围检查,所以必然要付出一些代价:针对每个数组,以及在运行期间对索引的校验,都会造成少量的内存开销。但由此换回的是更高的安全性,以及更高的工作效率。为此付出少许代价是值得的。 创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。一旦Java 看到null,就知道该句柄并未指向一个对象。正式使用前,必须为每个句柄都分配一个对象。若试图使用依然为null 的一个句柄,就会在运行期报告问题。因此,典型的数组错误在J
阅读全文
Java之基类型数据
摘要:【基类型数据】 1、boolean 1 位 - - Boolean 2、char 16 位 Unicode 0 Unicode 2 的16 次方-1 Character 3、byte 8 位 -128 +127 Byte 3、short 16 位 -2 的15 次方 +2 的15 次方-1 Short 4、int 32 位 -2 的31 次方 +2 的31 次方-1 Integer 5、long 64 位 -2 的63 次方 +2 的63 次方-1 Long 6、float 32 位 IEEE754 IEEE754 Float 7、double 64 位 IEEE754 IEEE754 Dou
阅读全文