企业网站备案要钱吗,网站建设公司推荐,seo网站建设及扩词,成都市金堂县网站建设大家好#xff0c;我是雄雄#xff0c;今天给大家分享的是#xff1a;java中构造代码块的用法。 什么叫代码块#xff1f;代码块将多行代码封装到一个{}中#xff0c;形成一个独立的代码区#xff0c;这就够成了代码块#xff0c;一般常见的代码块是这样的#xff1a; …大家好我是雄雄今天给大家分享的是java中构造代码块的用法。 什么叫代码块代码块将多行代码封装到一个{}中形成一个独立的代码区这就够成了代码块一般常见的代码块是这样的
Java中代码块根据其执行的时机与声明的不同可以分为以下四类
普通代码块 静态代码块 同步代码块 构造代码块
接下来我们依次介绍一下这4中代码快。
1.普通代码块 即在方法名后面用{}圈起来的代码块那么在什么时候执行呢当你调用该方法名时开始执行调用依次执行一次调用两次执行两次代码如下
public void info(){System.out.println(欢迎关注公众号【雄雄的小课堂】嘿嘿);}public static void main(String[] args) {info();}运行结果 2.静态代码块 即在类中使用static修饰后面{}中的那段代码块。那么在什么时候执行呢在该类加载时就执行并且只执行一次一般用于加载驱动。代码如下
public void info(){System.out.println(欢迎关注公众号【雄雄的小课堂】嘿嘿);}static{System.out.println(执行静态代码块);}public static void main(String[] args) {info();}运行结果如下在执行info方法时先执行的静态代码块 同步代码块 即使用synchronized关键字修饰并使用“{}”括起来的代码片段它表示同一时间只能有一个线程进入到该方法中是一种多线程保护机制。接下来我们举个例子来看看
这个例子有点麻烦我们假设有这样的需求在趵突泉景区门票售票处有三个售票窗口分别为1号窗口、2号窗口和3号窗口。当天票的数量是有限的100张。
现在开始来卖票3个窗口同时来卖还需要保证卖的票不能重复根据实际情况一张票只能卖一次我们不用同步代码块来模拟一下该业务。
售票类
/***
*
* 项目名称BianChengXiGuan
* 类名称Ticket
* 类描述售票类
* 创建人Mu Xiongxiong
* 创建时间2020-8-16 下午2:56:08
* 修改人Mu Xiongxiong
* 修改时间2020-8-16 下午2:56:08
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class Ticket implements Runnable {private int tickets 100;//运行public void run() {while (true) {if (tickets 0) {System.out.println(不好意思票卖完了);break;} else {System.out.println(Thread.currentThread() 恭喜你买到票票号 tickets);tickets--;}}}}开始卖票
public static void main(String[] args) {Ticket task new Ticket();//窗口1Thread t1 new Thread(task);//窗口2Thread t2 new Thread(task);//窗口3Thread t3 new Thread(task);//启动三个窗口开始售卖t1.start();t2.start();t3.start();}接下来看看运行结果 可以看到编号为100的门票卖了3次如何避免此类情况出现呢就需要用到同步代码块改正后的代码
public void run() {synchronized (this) {while (true) {if (tickets 0) {System.out.println(不好意思票卖完了);break;} else {System.out.println(Thread.currentThread() 恭喜你买到票票号 tickets);tickets--;}}}}运行结果如下
这样就没有问题了。
4.构造代码块 即在类中声明的时候没有修饰词直接使用{}括起来的代码就是构造代码块。执行时机为当执行每个不管是有参还是无参构造函数之前执行代码如下
public class TestMain {//构造代码块{System.out.println(执行构造代码块);}public TestMain(){System.out.println(执行无参构造方法);}public TestMain(int a){System.out.println(执行有参构造方法);}public static void main(String[] args) {TestMain test1 new TestMain();TestMain test new TestMain(3);System.out.println(执行完毕);}
}运行结果为 你看是不是这样的。
以上的就是java中的四种代码块至于说用哪种得看你需求了“因材施教”即可。
欢迎关注公众号雄雄的小课堂