文章列表
Java 理论与实践: 正确使用 Volatile 变量
volatile 变量使用指南
本文引自http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
级别: 中级
Brian Goetz (brian.goetz@sun.com), 高级工程师, Sun Microsystems
2007 年 7 月 05 日
Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性 ...
extends、implements:
classA extends classB叫继承;
interfaceA extends interfaceB叫扩展;
class implements interface叫实现。
continue、break、标签:
public class BreakContinueGoto {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub\
lable: for (int i = 0; i < 100; i++) {
if (i == 2)
continue;
if (i == 3)
continue lable;
if (i == 9)
b ...
if(expr1,expr2,expr3) ifnull(expr1,expr2)
1.两个都是mysql函数;
2.if(expr1,expr2,expr3):
如果expr1为真则返回expr2否则返回expr3
select if(1>0,'yes','no')
返回'yes';
3.expr2和expr3类型需一致;
4.ifnull(expr1,expr2):
如果expr1不为空则返回expr1,否则返回expr2
select ifnull(1/0,'yes')
返回 'yes'
...
1.String 类里面多数成员是final声明的:offset、 count 、value[];即不能改变;
2.StringBuffer类继承了AbstractStringBuffer类,多数方法是继承了AbstractStringBuffer里面的方法,其中value[],count等都是继承的。
StringBuffer中的构造函数比较有趣:他的构造函数很多但都是一个原理,即调用父构造函数AbstractStringBuffer(int i),i 为value[]容量。
当我们用new StringBuffer()构造时实际上调用super.AbstractStr ...
1.静态域
静态域属于类不属于对象,即使没有一个对象静态域也存在且只有一个,即便有100个对象实例也只有一个静态域。
静态域直接用类名引用,平常的域不可以,只能用对象实例引用:
package lib;
public class StaticField {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticField sf = new StaticField();
S ...
1.final实例域,(用final声明类成员变量)
3基本数据类型(声明的成员变量为基本数据类型)
这种成员变量只能在两处初始化,一处在声明他的地方,另一处在构造函数中,而且两者只能选一,然后就不能在其他处修改了。
3类(声明的成员变量为类)
这种成员变量的初始化情况和基本数据类型类似,也只能在那两处之一初始化,且不能在其他处修改。但是,类型为类的成员变量可以被修改。
package lib;
public class FinalFiekdTest {
/**
* @param args
*/
private ...