----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
一:普通代码块
在方法中出现的{} 就是普通代码块 如下所列
package code;
public class CodeDemo1 {
/**
* 普通代码块
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
{
String s="我是普通代码块";
System.out.println(s);
}
String s1="我不是普通代码块";
System.out.println(s1);
}
}
运行结果:
我是普通代码块
我是不是普通代码块
二:构造代码块
直接在类中定义且没有加static关键字的代码块称为{}构造代码块 在每次对象创建时都会被创建优于构造函数代码块
package code;
/*
* 构造代码块以及构造函数块
*
* 构造代码块在对象创建时早于构造函数块
* */
public class CodeDemo1 {
{
System.out.println("我是构造代码块");
}
public CodeDemo1(){
System.out.println("我是构造构造函数块");
}
public static void main(String[] args) {
new CodeDemo1();
}
}
运行结果:
我是构造代码块
我是构造构造函数块
三:静止代码块
静止代码块(以static为关键字修饰的语句块)常用来进行类变量的初始化 ,在加载类时只执行一次
/*
* 静止代码块
* */
public class CodeDemo1 {
{
System.out.println("我是构造代码块");
}
static{
System.out.println("我是静止代码块");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new CodeDemo1();
{
String s="我是普通代码块";
System.out.println(s);
}
}
}
运行结果:
我是静止代码块
我是构造代码块
我是普通代码块
静止代码块 优于构造代码块和普通代码块, 构造代码块和普通代码块要看(对象的创建是不是在普通代码块前面创建了 , 如果是构造代码块优于普通代码块 ,反之亦然)
四:同步代码块
同步代码块不同于上面的三者代码块,同步代码块是为了解决线程之间争夺CPU之源 (防止线程之间切换导致代码混乱)
package codes;
/*
*同步代码块
*解决线程之间的抢夺CPU的临界之源
* */
public class SynchronizeCode {
public static void main(String[] args) {
//创建锁
final Object lock = new Object();
//开启线程一
new Thread() {
public void run() {
while (true) {
synchronized (lock) {
System.out.print("同步");
System.out.println("代码块");
}
}
};
}.start();
//开启线程二
new Thread() {
public void run() {
while (true) {
synchronized (lock) {
System.out.print("Synchronize");
System.out.println("Code块");
}
}
};
}.start();
}
}
第一次写 有好多缺点请大家指点。
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------