亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)用位運(yùn)算維護(hù)狀態(tài)碼

 更新時(shí)間:2024年03月07日 09:35:27   作者:半畝方塘立身  
位運(yùn)算是一種非常高效的運(yùn)算方式,在算法考察中比較常見,那么業(yè)務(wù)代碼中我們?nèi)绾问褂梦贿\(yùn)算呢,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧

位運(yùn)算是一種非常高效的運(yùn)算方式。在算法考察中比較常見,它使用位級別的操作來表示和控制狀態(tài),這在管理多個(gè)布爾標(biāo)志或狀態(tài)時(shí)尤其有用。那么業(yè)務(wù)代碼中我們?nèi)绾问褂梦贿\(yùn)算呢?

位運(yùn)算基礎(chǔ)

我們先來回顧一下位運(yùn)算的基礎(chǔ):

  • 與(AND)運(yùn)算:只有當(dāng)兩個(gè)位都是1時(shí),結(jié)果才是1(a & b)。
  • 或(OR)運(yùn)算:如果兩個(gè)位中至少有一個(gè)為1,那么結(jié)果就是1(a | b)。
  • 異或(XOR)運(yùn)算:如果兩個(gè)位不同,則結(jié)果為1(a ^ b)。
  • 非(NOT)運(yùn)算:反轉(zhuǎn)位的值(~a)。
  • 左移:將位向左移動,右側(cè)填充0(a << b)。
  • 右移:將位向右移動,左側(cè)填充0(a >> b)。

業(yè)務(wù)狀態(tài)碼應(yīng)用

如何通過位運(yùn)算維護(hù)業(yè)務(wù)狀態(tài)碼呢?我們可以在一個(gè)整數(shù)中存儲多個(gè)布爾值,每個(gè)位代表一個(gè)不同的狀態(tài)或標(biāo)志。

讓我們將上述課程狀態(tài)的例子修改為管理訂單狀態(tài)的示例。假設(shè)一個(gè)訂單有以下幾種狀態(tài):已創(chuàng)建(Created)、已支付(Paid)、已發(fā)貨(Shipped)、已完成(Completed)。

定義狀態(tài)常量

我們首先定義這些狀態(tài)作為常量,并為每個(gè)狀態(tài)分配一個(gè)位:

  • 已創(chuàng)建(Created): 0001 (1)
  • 已支付(Paid): 0010 (2)
  • 已發(fā)貨(Shipped): 0100 (4)
  • 已完成(Completed): 1000 (8)

Java 實(shí)現(xiàn)

接下來,我們在Java中實(shí)現(xiàn)一個(gè)OrderStatus類來管理這些狀態(tài):

public class OrderStatus {

    private static final int CREATED = 1;   // 0001
    private static final int PAID = 2;      // 0010
    private static final int SHIPPED = 4;   // 0100
    private static final int COMPLETED = 8; // 1000

    private int status;

    public OrderStatus() {
        this.status = CREATED; // 默認(rèn)狀態(tài)為已創(chuàng)建
    }

    // 添加狀態(tài)
    public void addStatus(int status) {
        this.status |= status;
    }

    // 移除狀態(tài)
    public void removeStatus(int status) {
        this.status &= ~status;
    }

    // 檢查是否有特定狀態(tài)
    public boolean hasStatus(int status) {
        return (this.status & status) == status;
    }

    // 示例輸出
    public static void main(String[] args) {
        OrderStatus orderStatus = new OrderStatus();

        System.out.println("-------訂單已支付-----------");
        // 假設(shè)訂單已支付
        orderStatus.addStatus(PAID);
        System.out.println("創(chuàng)建訂單是否創(chuàng)建 " + orderStatus.hasStatus(CREATED));
        System.out.println("創(chuàng)建訂單是否支付 " + orderStatus.hasStatus(PAID));

        // 假設(shè)訂單已發(fā)貨
        System.out.println("-------訂單已發(fā)貨-----------");
        orderStatus.addStatus(SHIPPED);
        System.out.println("創(chuàng)建訂單是否發(fā)貨 " + orderStatus.hasStatus(SHIPPED));

        // 假設(shè)訂單已完成
        System.out.println("-------假設(shè)訂單已完成-----------");
        orderStatus.addStatus(COMPLETED);
        System.out.println("創(chuàng)建訂單是否完成 " + orderStatus.hasStatus(COMPLETED));
    }
}

運(yùn)行結(jié)果:

在這個(gè)例子中,我們通過OrderStatus類使用位運(yùn)算來管理訂單的不同狀態(tài)。這種方式允許訂單在其生命周期中擁有多個(gè)狀態(tài),而且能夠高效地檢查、添加或刪除這些狀態(tài)。當(dāng)訂單狀態(tài)變化時(shí),我們只需要簡單地調(diào)用相應(yīng)的方法來更新狀態(tài)。這樣實(shí)現(xiàn)后相信同事肯定對你刮目的!

到此這篇關(guān)于Java實(shí)現(xiàn)用位運(yùn)算維護(hù)狀態(tài)碼的文章就介紹到這了,更多相關(guān)Java位運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java布局管理之CardLayout簡單實(shí)例

    java布局管理之CardLayout簡單實(shí)例

    這篇文章主要為大家詳細(xì)介紹了java布局管理之CardLayout的簡單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • SpringBoot?實(shí)現(xiàn)流控的操作方法

    SpringBoot?實(shí)現(xiàn)流控的操作方法

    本文介紹了限流算法的基本概念和常見的限流算法,包括計(jì)數(shù)器算法、漏桶算法和令牌桶算法,還介紹了如何在Spring?Boot中使用Guava庫和自定義注解以及AOP實(shí)現(xiàn)接口限流功能,感興趣的朋友一起看看吧
    2024-12-12
  • SpringBoot項(xiàng)目Maven下載依賴速度慢問題的解決方法

    SpringBoot項(xiàng)目Maven下載依賴速度慢問題的解決方法

    在使用Maven構(gòu)建項(xiàng)目時(shí),有時(shí)會遇到下載依賴包速度慢的問題,為了提高下載速度,我們可以將默認(rèn)的倉庫地址替換為國內(nèi)鏡像源,所以本文介紹了SpringBoot項(xiàng)目Maven下載依賴速度慢問題的解決方法,需要的朋友可以參考下
    2024-08-08
  • SpringBoot中常用注解的使用合集

    SpringBoot中常用注解的使用合集

    注解?annotation一般是用來定義一個(gè)類、屬性和一些方法,以便程序能夠被編譯處理,本文為大家整理了SpringBoot中的常用注解以及它們的使用,需要的可以參考下
    2023-07-07
  • SpringBoot如何優(yōu)雅地使用Swagger2

    SpringBoot如何優(yōu)雅地使用Swagger2

    這篇文章主要介紹了SpringBoot如何優(yōu)雅地使用Swagger2,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springBoot之如何獲取接口請求數(shù)據(jù)和返回?cái)?shù)據(jù)實(shí)現(xiàn)日志

    springBoot之如何獲取接口請求數(shù)據(jù)和返回?cái)?shù)據(jù)實(shí)現(xiàn)日志

    這篇文章主要介紹了springBoot之如何獲取接口請求數(shù)據(jù)和返回?cái)?shù)據(jù)實(shí)現(xiàn)日志問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Mybatis中collection和association的使用區(qū)別詳解

    Mybatis中collection和association的使用區(qū)別詳解

    這篇文章主要介紹了Mybatis中collection和association的使用區(qū)別詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • mybatis中使用InsertProvider注解報(bào)錯(cuò)解決全過程

    mybatis中使用InsertProvider注解報(bào)錯(cuò)解決全過程

    這篇文章主要介紹了mybatis中使用InsertProvider注解報(bào)錯(cuò)解決全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java遍歷Map集合的方法(最新推薦)

    Java遍歷Map集合的方法(最新推薦)

    這篇文章主要介紹了Java遍歷Map集合的方法,遍歷map的key集合然后通過key獲取value,本文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • java使用TimerTask定時(shí)器獲取指定網(wǎng)絡(luò)數(shù)據(jù)

    java使用TimerTask定時(shí)器獲取指定網(wǎng)絡(luò)數(shù)據(jù)

    java.util.Timer定時(shí)器,實(shí)際上是個(gè)線程,定時(shí)調(diào)度所擁有的TimerTasks。一個(gè)TimerTask實(shí)際上就是一個(gè)擁有run方法的類,需要定時(shí)執(zhí)行的代碼放到run方法體內(nèi),TimerTask一般是以匿名類的方式創(chuàng)建,下面的就用示例來學(xué)習(xí)他的使用方法
    2014-01-01

最新評論