java優先順序
1. java運算符優先順序順序
2. java運算符優先順序
Java中的運算符按優先順序從高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。 Java中整數運算符在整數運算時,如果操作數是long類型,則運算結果是long類型,否則為int類型,絕不會是byte,short或char型。這樣,如果變數i被聲明為short或byte,i+1的結果會是int。如果結果超過該類型的取值范圍,則按該類型的最大值取模。單目整數運算符是: 運算符操作-單目非~位補碼++加1--減1 一、運算符"+",如果必要則自動把操作數轉換為String型。如果操作數是一個對象,它可定義一個方法toString()返回該對象的String方式,例如floata=1.0print(「Thevalueofais」+a+「\n」);+運算符用到的例子Strings=「a=」+a;+=運算符也可以用於String。注意,左邊(下例中的s1)僅求值一次。s1+=a;//s1=s1+a//若a非String型,自動轉換為String型。 二、整數算術運算的異常是由於除零或按零取模造成的。它將引發一個算術異常。下溢產生零,上溢導致越界。例如:加1超過整數最大值,取模後,變成最小值。一個op=賦值運算符,和上表中的各雙目整數運算符聯用,構成一個表達式。整數關系運算符<,>,<=,>=,==和!=產生boolean類型的數據。 三、數組運算符數組運算符形式如下:<expression>[<expression>]可給出數組中某個元素的值。合法的取值范圍是從0到數組的長度減1。 四、對象運算符雙目運算符instanceof測試某個對象是否是指定類或其子類的實例。例如:if(myObjectinstanceofMyClass){MyClassanothermyObject=(MyClass)myObject;…}是判定myObject是否是MyClass的實例或是其子類的實例。 五、浮點運算符浮點運算符可以使用常規運算符的組合:如單目運算符++、--,雙目運算符+、-、*和/,以及賦值運算符+=,-=,*=,和/=。此外,還有取模運算:%和%=也可以作用於浮點數,例如:a%b和a-((int)(a/b)*b)的語義相同。這表示a%b的結果是除完後剩下的浮點數部分。只有單精度操作數的浮點表達式按照單精度運算求值,產生單精度結果。如果浮點表達式中含有一個或一個以上的雙精度操作數,則按雙精度運算,結果是雙精度浮點數。 六、布爾運算符布爾(boolean)變數或表達式的組合運算可以產生新的boolean值。單目運算符!是布爾非。雙目運算符&,|和^是邏輯AND,OR和XOR運算符,它們強制兩個操作數求布爾值。為避免右側操作數冗餘求值,用戶可以使用短路求值運算符&&和||。 七、用戶可以使用==和!=,賦值運算符也可以用&=、|=、^=。三元條件操作符和C語言中的一樣。 八、++運算符用於表示直接加1操作。增量操作也可以用加運算符和賦值操作間接完成。++lvalue(左值表示lvalue+=1,++lvalue也表示lvalue=lvalue+1。 九、--運算符用於表示減1操作。++和--運算符既可以作為前綴運算符,也可以做為後綴運算符。雙目整數運算符是:運算符操作**+加-減*乘/除%取模&位與|位或^位異或<<左移 >>右移(帶符號) >>>添零右移整數除法按零舍入。除法和取模遵守以下等式:
3. java 裡面,主線程的優先順序可以設置嗎
Thread類的setPriority(int level)方法設置線程的優先順序。優先順序別從1到10,1是最不重要的,10是最重要的。不設置優先順序將是默認值5.
4. JAVA的運算符的優先順序是什麼樣的
所有的數學運算都認為是從左向右運算的,Java語言中大部分運算符也是從左向右結合的,只有單目運算符、賦值運算符和三目運算符例外,其中,單目運算符、賦值運算符和三目運算符是從右向左結合的,也就是從右向左運算。另外,Java 語言中運算符的優先順序共分為 14 級,其中 1 級最高,14 級最低。在同一個表達式中運算符優先順序高的先執行。如下是優先順序和結合性。
結合性是指如果遇到同一優先順序的運算符,程序的執行順序。比如!和++同時存在,它會先加,然後再去比較是否相等。
5. java中線程優先順序是怎麼回事給出一個例子
每一個線程都是有優先順序的,一般來說,高優先順序的線程在運行時會具有優先權,但這依賴於線程調度的實現,這個實現是和操作系統相關的(OSdependent)。可以定義線程的優先順序,但是這並不能保證高優先順序的線程會在低優先順序的線程前執行。線程優先順序是一個int變數(從1-10),1代表最低優先順序,10代表最高優先順序。
6. java 線程中優先順序究竟分幾級
這要看JVM,不同的JVM有不同的登記。有5級和10級之分,但你設置可以設0-9之間的整數,如果JVM按5級分,9和8就看做是同一級別。
7. java運算優先順序
所有的數學運算都認為是從左向右運算的,Java語言中大部分運算符也是從左向右結合的,只有單目運算符、賦值運算符和三目運算符例外,其中,單目運算符、賦值運算符和三目運算符是從右向左結合的,也就是從右向左運算。
乘法和加法是兩個可結合的運算,也就是說,這兩個運算符左右兩邊的操作數可以互換位置而不會影響結果。運算符有不同的優先順序,所謂優先順序就是在表達式運算中的運算順序。
一般而言,單目運算符優先順序較高,賦值運算符優先順序較低。算術運算符優先順序較高,關系和邏輯運算符優先順序較低。多數運算符具有左結合性,單目運算符、三目運算符、賦值運算符具有右結合性。
Java 語言中運算符的優先順序共分為 14 級,其中 1 級最高,14 級最低。在同一個表達式中運算符優先順序高的先執行。表 1 列出了所有的運算符的優先順序以及結合性。
使用優先順序為 1 的小括弧可以改變其他運算符的優先順序,即如果需要將具有較低優先順序的運算符先運算,則可以使用小括弧將該運算符和操作符括起來。例如下面的表達式:(x-y)*z/5
在這個表達式中先進行括弧內的減法運算,再將結果與 z 相乘,最後將積除以 5 得出結果。整個表達式的順序按照從左向右執行,比較容易理解。
再來看一個復雜的表達式,如下所示。--y || ++x && ++z;
這個表達式中包含了算術運算符和邏輯運算符。根據表 1 中列出的優先順序,可以確定它的執行順序如下:
① 先計算 y 的自減運算符,即 --y。
② 再計算 x 的自增運算符,即 ++x。
③ 接著計算 z 的自增運算符,即 ++z。
④ 由於邏輯與比邏輯或的優先順序高,這里將 ② 和 ③ 的結果進行邏輯與運算,即 ++x && ++z。
⑤ 最後將 ④ 的結果與 ① 進行邏輯或運算,即 --y||++x&&++z。
如果沒有上述對該表達式執行順序的說明,第一眼看到它時將很難識別優先順序。對於這類問題,可以通過添加小括弧使表達的順序更加清晰,而不用去查優先順序表。如下所示為改進後的表達式。(--y)||((++x)&&(++z));
技巧:記住這么多運算符的優先順序是比較困難的,因此讀者應該在實際應用中多多練習。
因為 Java 運算符存在這種優先順序的關系,因此在做 SCJP 的時候或者某些公司的面試題,有如下 Java 代碼:
int a = 5;
int b = 4;
int c = a++- --b*++a/b-- >>2%a--;
問 c 的值是多少?這樣的語句實在太恐怖了,即使多年的老程序員看到這樣的語句也會眩暈。這樣的代碼只能在考試中出現,作為一個程序員如果寫這樣的代碼,恐怕他馬上就得走人了,因為他完全不懂程序開發。
源代碼就是一份文檔,源代碼的可讀性比代碼運行效率更重要。 因此在這里要提醒大家:
不要把一個表達式寫得過於復雜,如果一個表達式過於復雜,則把它分成幾步來完成。
不要過多地依賴運算符的優先順序來控製表達式的執行順序,這樣可讀性太差,盡量使用()來控製表達式的執行順序。
8. java線程中的優先順序問題
樓主請記住一點,多線程的執行本身就是多個線程的交換執行,並非同時執行,執行的優先順序只是他執行的概率。
例如原本優先順序一樣,那麼兩個線程的執行的概率都為50%。現在我們提高其中一個,那麼一個為60%的概率搶到進入CPU執行的機會,另一個是依舊是40%。執行完一次之後又要重新搶佔CPU。但是40%概率進入的線程也有可能搶到,雖然概率低了點,但總會有他執行的機會,萬一次次都抽中40%的概率呢?所以你要正確理解線程和線程之間的優先順序
9. java 如何設置線程的優先順序
{
MyThread1(Stringname){
super(name);
}
@Override
publicvoidrun(){
for(inti=0;i<10000;i++){
System.out.println(getName()+":"+i);
}
}
}
{
MyThread2(Stringname){
super(name);
}
@Override
publicvoidrun(){
for(inti=0;i<10000;i++){
System.out.println(getName()+":"+i);
}
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
MyThread1t1=newMyThread1("t1");
MyThread1t2=newMyThread1("t2");
t1.setPriority(Thread.NORM_PRIORITY+3);
t1.start();
t2.start();
}
}
10. java中主線程和子線程那個優先順序高
在一個線程中開啟另外一個新線程,則新開線程稱為該線程的子線程,子線程初始優先順序與父線程相同。不過主線程先啟動佔用了cpu資源,如果存在主線程和子線程爭搶cpu執行權的話,看運氣,誰搶到就讓誰執行。
其實設置了優先順序,也無法保障線程的執行次序。只不過,優先順序高的線程獲取CPU資源的概率較大,優先順序低的並非沒機會執行。
線程的優先順序用1-10之間的整數表示,數值越大優先順序越高,默認的優先順序為5。