日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...

發布時間:2023/12/2 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java基礎(2)--運算符詳解

自增自減規則

自增自減就是常用的 a = a++ 或者 a = ++a;前者是后綴式,先把a賦值給a,再加一;后者是后綴式,先加一,在賦值給a;而且a++,++a并不是原子操作,在當線程環境下并不會出錯,當放在多線程下時,就會出現數據錯誤的問題。

public class Test01 {

private static int a = 0;

private static int b = 0;

private static AtomicInteger atomicInteger = new AtomicInteger(0);

public static void main(String[] args) throws InterruptedException {

for (int i = 0; i < 10; i++){

Thread t = new Thread() {

@Override

public void run() {

for (int i = 0; i < 1000; i++) {

a = a + 1;

b++;

atomicInteger.incrementAndGet();

}

}

};

t.start();

}

// 給計算機運算的時間

Thread.sleep(2000);

System.out.println("a = a + 1: " + a);

System.out.println("b++ :" + b);

System.out.println("原子操作: " + atomicInteger);

Thread.sleep(3000);

System.out.println("a = a + 1: " + a);

System.out.println("b++ :" + b);

System.out.println("原子操作: " + atomicInteger);

}

}

結果是

a = a + 1: 9526

b++ :9930

原子操作: 10000

a = a + 1: 9526

b++ :9930

原子操作: 10000

所以在多線程環境下進行自增自減時要注意加鎖,因為縮略的自增自減其實是兩個操作。另外我還發現a+++b,以及a---b都是采用了貪心策略,即從左至右運算的運算符會盡可能的匹配運算符,所以你會發現a--b會報錯。

&和&&的區別

&&我們都用過,但是&有誰用過呢?他和&&有用什么不同呢,我們直接上代碼一探究竟:

public class Test02 {

public static void main(String[] args) {

int a = 1;

int c = 0;

// 只要&&前面的等式有一個錯了,就不會管后面的條件

if (a < c && a / c > 0){

System.out.println("&&");

}

// if(a > c && a / c > 0){

// System.out.println();

// }

System.out.println("--------");

// 即使前面的等式錯誤,也要判斷完所有的條件

if (a < c & a / c > 0){

System.out.println("&");

}

}

}

結果:

--------

Exception in thread "main" java.lang.ArithmeticException: / by zero

at base.Test02.main(Test02.java:15)

顯然,&和&&都具有邏輯與的功能,只有在所有條件都滿足的情況下才進入if代碼塊,只不過&&具有短路性,對于&&運算符兩端的等式,從左往右執行該等式,只要有一個 等式不滿足就直接跳出if代碼塊,而&運算符,總是會判斷完所有的條件等式。

總結

以上是生活随笔為你收集整理的java 实现按规则自增功能_java运算符详解 - osc_74vaali6的个人空间 - OSCHINA - 中文开源技术交流社区...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。