类中方法的方法体
public void show(){
name="h2";
System.out.println("普通代码块");
}
构造代码块使用{ } 会在每次创建对象时被调用,
优先于类的构造函数执行。
{
name="hu1";
System.out.println("构造代码块");
}
用static{}包裹起来的代码片段,只会执行一次。
静态代码块优先于构造代码块执行。
static {
name1="statc_hu1";
System.out.println("静态代码块");
}
public void showThread(){
synchronized (daimk.class){
name="h2";
System.out.println("同步代码块");
}
}
使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。
public daimk() {
this.name=name;
System.out.println("无参构造函数");
}
public daimk(String name){
this.name=name;
System.out.println("带参构造函数");
}
一定要注意执行顺序 比如如果我在静态代码块里使用构造函数那么肯定报错因为调用静态代码块的时候构造函数还没出生,
public class daimk {
private String name;
private static String name1;
static {
name1="statc_hu1";
System.out.println("静态代码块");
}
{
name="hu1";
System.out.println("构造代码块");
}
public daimk() {
this.name=name;
System.out.println("无参构造函数");
}
public daimk(String name){
this.name=name;
System.out.println("带参构造函数");
}
public void show(){
name="h2";
System.out.println("普通代码块");
}
public void showThread(){
synchronized (daimk.class){
name="h2";
System.out.println("同步代码块");
}
}
}
public static void main(String[] args) {
daimk da=new daimk();
}
静态代码块
构造代码块
无参构造函数
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_45203607/article/details/120236531
内容来源于网络,如有侵权,请联系作者删除!