JavaRush /Java Blog /Random-TW /Java中的數字運算

Java中的數字運算

在 Random-TW 群組發布
你好!今天我們來看看一個非常重要的主題,即Java中的數字運算。數字在程式設計中無所不在。如果您深入研究學校課程,您會記得電腦上的所有資訊都是以數位格式(零和一的組合)呈現的,也稱為二進位代碼。 Java 中的數字運算 - 2程式設計中有很多關於數字的操作,因此我們將透過範例來了解其中最重要的操作:)

算術運算

讓我們從最簡單的事情開始—算術運算。這些是眾所周知的加法(+)、減法(-)、乘法(*)和除法(/)。
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
控制台輸出:

1032
966
32967
30
這些你都已經用過了。您可以為它們添加一個操作%- 除法的餘數。
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
控制台輸出:

1
在這個例子中,我們將 33 除以 2。結果,我們得到 16,並且還剩下一個不能被 2 - 1 整除的額外「尾巴」。這個「尾巴」將是「除法餘數」運算的結果。Java(以及數學)實作比較運算子。您可能在學校也認識他們:
  • 等於 (==
  • 更多的 (>
  • 較少的 (<
  • 大於或等於 ( >=)
  • 小於或等於 ( <=)
  • 不等於 ( !=)
這裡值得注意的是許多初學者都會犯錯的一個重要點。運算「等於」寫為==,且沒有一個符號=。Java 中的單位符號=是一個賦值運算符,其中一個變數被賦予一個數字、字串或另一個變數的值。 Java 中的數字運算 - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
控制台輸出:

999
哎呀!這顯然不是我們所期望的結果。這是一種完全不同類型的數據:我們期望看到boolean,但得到的是數字。這是因為括號中我們進行的是賦值運算,而不是比較運算。 x=yy(999) 被指派給變量x,然後我們將其列印x到控制台。正確選項:
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
控制台輸出:

false
現在我們已經正確比較了兩個數字!:) 賦值運算 ( =) 的另一個特點是它可以「鍊式」完成:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
控制台輸出:

256
請記住:分配是從右到左完成的。此表達式 ( x = y = z) 將分步驟執行:
  • y = z,即 y = 256
  • x = y,即 x = 256

一元運算

它們被稱為“unary”,源自於單字“uno”——“一個”。他們之所以得到這個名字,是因為與以前的不同,他們是在一個號碼上進行的,而不是在多個號碼上進行的。這些包括:
  • 一元減。它反轉數字的符號。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // change the sign for the first time
           x = -x;
           System.out.println(x);
    
           // change the sign a second time
           x= -x;
           System.out.println(x);
       }
    }

    控制台輸出:

    
    -999
    999

    我們使用了一元減號兩次。結果我們的數字先是負數,然後又變成正數了!

  • 遞增 ( ++) 和遞減 ( --)

    一次操作++將數字加一,一次操作--將數字減少相同的單位。

    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }

    控制台輸出:

    
    1000
    999
如果您聽過 C++ 語言,您可能會熟悉這種表示法。借助這樣一個有趣的名字,它的創建者傳達了他們的想法:“C++是C語言的擴展。” 記事本的一個流行改進版本稱為 Notepad++ 很重要的一點。自增和自減操作有兩種類型:後綴和前綴。 x++- 字尾表示法 ++x- 字首表示法 如果將加號和減號放在數字之前或之後,根本差別是什麼?讓我們來看一個例子:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
控制台輸出:

999
有什麼不對!我們想要加x1 並為變數分配一個新值y。即y應該等於1000。但我們得到了不同的結果-999。原來並x沒有增加,增量操作不起作用?它是如何運作的。要驗證這一點,請嘗試在最後將 x 列印到控制台:)
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
控制台輸出:

999
1000
事實上,這就是後綴操作被這樣呼叫的原因:它在主表達式之後執行。也就是說,在我們的例子中: int y = x++; 首先它被執行 y = x(變數 y 將被賦予其原始值x),然後才被執行 x++ 。如果我們對此行為不滿意怎麼辦?您需要使用前綴表示法:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
在這種情況下,它會首先起作用 ++x ,並且只有在那之後才起作用。 y = x; 這種差異值得立即記住,以免在實際程序中犯錯誤,其中所有行為都可能因此而顛倒:)

共同經營

另外,Java中還有所謂的組合操作。他們使用兩種操作的組合:
  • 任務
  • 算術運算
這包括操作:
  • +=
  • -=
  • *=
  • /=
  • %=
讓我們來看一個例子:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
控制台輸出:

1032
x += y方法x = x + y。只是為了簡潔起見,使用了連續的兩個字元。這也適用於-=*=/=和的組合%=

邏輯運算

除了對數字的操作之外,Java 還對布林變數 -true和進行操作false。這些操作是使用邏輯運算子執行的
  • !—“非”運算符。反轉布林變數的值

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    控制台輸出:

    
    false

  • &&— 運算符「AND」。true僅當兩個操作數均為 時才傳回值true

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    控制台輸出:

    
    false
    true

    第一個運算的結果是false,因為其中一個條件為假,即 100 > 200。運算子要求所有條件都為真(例如第二行)&&才能回傳。true

  • ||—“或”運算符。true當至少一個操作數為 true 時傳回。

    我們之前的範例的工作方式有所不同:

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    控制台輸出:

    
    true

    Выражение 100 > 200 по-прежнему ложно, но оператору “or” вполне достаточно, что первая часть (100 > 10) является истинной.

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION