1.
String,Integer,int互相转换
int转String
String s=String.valueOf(i);
String s=Integer.toString(i);
String s=""+i;
String转int:
int i=Integer.parseInt(s);
int i=Integer.ValueOf(s);
int和Integer互相转换(自动装箱,自动拆箱)
Integer obj=10;
int i=obj;
2.
无返回值的方法可以直接用return中断方法,例如:
public static void TestNoReturn(){
int i=0;
while(i!=3){
System.out.println(i);
i++;
return;
}
}
3.
对象引用传递(改变栈内存的指向)
Book bookA=new Book();
bookA.setTitle("abc");
Book bookB=bookA;
bookB.setTitle("xyz");
System.out.println(bookA.getTitle());
打印输出为xyz
4.
接口可以继承多个接口,抽象类可以实现多个接口
5.
原子操作
"原子操作(atomic operation)是不需要synchronized",这是Java多线程编程的老生常谈了。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切[1] 换到另一个线程)。
如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,那么这个操作是一个原子(atomic)操作。
原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分。
将整个操作视作一个整体是原子性的核心特征。
6.
AtomicInteger
一个可以原子性更新的int值,是线程安全的(传统的i++,i--是线程不安全的,要加synchronized)
常用方法AtomicInteger.getAndIncrement(),AtomicInteger.getAndDecrement()
AtomicInteger.IncrementAndGet(),AtomicInteger.DecrementAndGet()
7.
LinkedBlockingQueue
基于链接节点的有选择边界的阻塞队列。这个队列对FIFO(先进先出)元素进行排序。队列的头部是队列中存在时间最长的元素。队列的尾部是在队列上停留的时间最短的元素。在队列尾部插入新元素,队列检索操作获取队列头部的元素。与基于数组的队列相比,链接队列通常具有更高的吞吐量,但在大多数并发应用程序中性能的可预测性较差。
An optionally-bounded blocking queue based on linked nodes. This queue orders elements FIFO (first-in-first-out). The head of the queue is that element that has been on the queue the longest time. The tail of the queue is that element that has been on the queue the shortest time. New elements are inserted at the tail of the queue, and the queue retrieval operations obtain elements at the head of the queue. Linked queues typically have higher throughput than array-based queues but less predictable performance in most concurrent applications.