欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java編程中的4種代碼塊詳解

 更新時間:2021年06月20日 15:17:23   作者:編程之路  
在本篇內(nèi)容里小編個總結了Java編程中的4種代碼塊相關的知識點,有興趣的朋友們可以學習下。

在Java編程中,代碼塊就是指用“{}”括起來的代碼。下面看一下這四種代碼塊。

1、普通代碼塊

就是指類中方法的方法體。

public void xxx(){ 
      //code 
  } 

2、構造塊

下面用“{}”括起來的代碼片段,構造塊在創(chuàng)建對象時會被調用,每次創(chuàng)建對象時都會被調用,并且優(yōu)先于類構造函數(shù)(包括有參和無參的)執(zhí)行。 構造塊中定義的變量是局部變量。

public class Client {
    {//構造代碼塊
        System.out.println("執(zhí)行構造代碼塊");
    }

    publicClient() {
        System.out.println("執(zhí)行無參構造函數(shù)");
    }

    publicClient(String string) {
        System.out.println("執(zhí)行有參構造函數(shù)");
    }
}

3、靜態(tài)塊

下面用static"{}"括起來的代碼片段,只會在第一次加載此類時,僅執(zhí)行一次,并且靜態(tài)塊優(yōu)先于構造塊執(zhí)行。

public class Demo
{
    public Demo()
    {
        System.out.print("默認構造方法!-->");
    }

//構造代碼塊

{
    System.out.print("構造代碼塊!-->");
}

//靜態(tài)代碼塊
static
{
    System.out.print("靜態(tài)代碼塊!-->");
}

public static void test()
{
    {
        System.out.println("普通方法中的代碼塊!");
    }
}
}
public static void main(String[]args)
{
    Demo d = new Demo();
    d.test();
}
/*
運行輸出結果是:
靜態(tài)代碼塊!-->構造代碼塊!-->默認構造方法!-->普通方法中的代碼塊!
*/

4、同步代碼塊

下面使用synchronized(obj){}括起來的代碼塊,在多線程環(huán)境下,對共享數(shù)據(jù)進行讀寫操作是需要互斥進行的,否則會導致數(shù)據(jù)的不一致。常見的是synchronized用來修飾方法,其語義是任何線程進入synchronized需要先取得對象鎖如果被占用了,則阻塞,實現(xiàn)了互斥訪問共享資源。而synchronized也是有代價的。一個常見的場景是,一個冗長的方法中,其實只有一小段代碼需要訪問共享資源,這時使用同步塊,就只將這小段代碼寫在synchronized block,既能夠實現(xiàn)同步訪問,也能夠減少同步引入的開銷。 同步代碼塊須寫在方法中。

class Ticket implements Runnable //extends Thread
{
    object obj=new object();//共享對象,用來記錄是否有其它進程在訪問
    private static int tick=100;
    public void run()              /*不能在這寫同步函數(shù),否則其它線程用不了,需要單獨寫一個同步函數(shù)*/
    {
        while(true)
        {   synchronized(obj)
            {
                if(tick>0)
                { 
                    try
                    {
                        Thread.sleep(10);   /*每次運行就沉睡一下*/
                    }
                    catch(Exception e)
                    {
                        
                    }
                    System.out.println(Thread.currentThread().getName()+"sale:--"+tick--);
                }
            }
          }
    }
}

到此這篇關于Java編程中的4種代碼塊詳解的文章就介紹到這了,更多相關Java中的四種代碼塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java并發(fā)訪問重復請求過濾問題

    java并發(fā)訪問重復請求過濾問題

    本篇文章給大家分享了關于java并發(fā)訪問重復請求過濾的相關問題以及解決方法,對此有需要的朋友參考學習下。
    2018-05-05
  • Java?Runtime的使用詳解

    Java?Runtime的使用詳解

    這篇文章主要介紹了Java?Runtime的使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java多線程學習筆記之自定義線程池

    java多線程學習筆記之自定義線程池

    本篇文章主要介紹了java多線程學習筆記之自定義線程池 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java的jmap命令的具體使用

    Java的jmap命令的具體使用

    jmap是JDK提供的一個可以生成Java虛擬機的堆轉儲快照dump文件的命令行工具,本文主要介紹了Java的jmap命令的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談Java 8 新增函數(shù)式接口到底是什么

    淺談Java 8 新增函數(shù)式接口到底是什么

    這篇文章主要介紹了淺談Java 8 新增函數(shù)式接口到底是什么,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java中ReentrantLock和ReentrantReadWriteLock的原理

    Java中ReentrantLock和ReentrantReadWriteLock的原理

    這篇文章主要介紹了Java中ReentrantLock和ReentrantReadWriteLock的原理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • springboot啟動報錯:application?startup?failed問題

    springboot啟動報錯:application?startup?failed問題

    這篇文章主要介紹了springboot啟動報錯:application?startup?failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java超詳細分析繼承與重寫的特點

    Java超詳細分析繼承與重寫的特點

    繼承是Java面向對象編程中的一門。繼承是子類繼承父類的特征和行為,或者是繼承父類得方法,使的子類具有父類得的特性和行為。重寫是子類對父類的允許訪問的方法實行的過程進行重新編寫,返回值和形參都不能改變。就是對原本的父類進行重新編寫,但是外部接口不能被重寫
    2022-05-05
  • Java AbstractMethodError原因案例詳解

    Java AbstractMethodError原因案例詳解

    這篇文章主要介紹了Java AbstractMethodError原因案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • springboot log多環(huán)境配置方式

    springboot log多環(huán)境配置方式

    這篇文章主要介紹了springboot log多環(huán)境配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論