黑马程序员_java的四种代码块

----------- 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学习型技术博客、期待与您交流! ------------


你可能感兴趣的:(java基础,java,线程,类,代码块)