java與優先順序
㈠ java中的優先順序問題
「++」薯滲與「--」的優先順序都比「<」要高,
不過「++」、「--」的運算方向是自右向左的,「<」正好相反,所以在進行while里的條件判斷後 y 進行「--」數雹脊操作,結果之所肆型以為 5 、5;
因為在運行到while循環時,條件判斷里的 x 已經「++」一次,沒有進while循環,所以後面的結果為6。
明白了么.....
㈡ java運算符的優先順序口訣急用急用!!
個表達式中進行若干操作時,每一部分都會按預先確定的順序進行計算求解,稱這個順序為運算符的優先順序。
在表達式中,當運算符不止一種時,要先處理算術運算符,接著處理比較運算符,然後再處理邏輯運算符。所有比較運算符的優先順序都相同;也就是說,要按它們出現的順序從左到右進行處理。而算術運算符和邏輯運算符則必須按下列優先順序進行處理:
算術
指數運算 (^)
負數 (–)
乘法和除法 (*、 /)
整數除法 (\)
求模運算 (Mod)
加法和減法 (+、 –)
字元串連接 (&)
比較
相等 (=)
不等 (<>)
小於 (<)
大於 (>)
小於或相等 (<=)
大於或相等 (>=)
Like
Is
邏輯
Not
And
Or
Xor
Eqv
Imp
當乘法和除法同時出現在表達式中時,每個運算都按照它們從左到右出現的順序進行計算。當乘法和除法同時出現在表達式中時,每個運算也都按照它們從左到右出現的順序進行計算。可以用括弧改變優先順序,強令表達式的某些部分優先運行。括弧內的運算總是優先於括弧外的運算。但是,在括弧之內,運算符的優先順序不變。
字元串連接運算符 (&) 不是算術運算符,但是,就其優先順序而言,它在所有算術運算符之後,而在所有比較運算符之前。
Like 的優先順序與所有比較運算符都相同,實際上是模式匹配運算符。
Is 運算符是對象引用的比較運算符。它並不將對象或對象的值進行比較,而只確定兩個對象引用是否參照了相同的對象。
㈢ JAVA優先順序運算
++優先基襪畝級高於*。所以先算a++,括弧加不加都行搏森,等價的。
++在後面:先做其他運算,在自身加1。也就是b=4,a=4+1;
++在前面:自身先加一,好啟在做其他運算。也就是a=5,b=5;
結果就是49啦。
㈣ 對Java線程優先順序的理解是什麼
每一個線程都是有優先順序的,一般來說,高優先順序的線程在運行時會具有優先權,但這依賴於線程調度的實現,這個實現是和操作系統相關的(OSdependent)。可以定義線程的優先順序,但是這並不能保證高優先順序的線程會在低優先順序的線程前執行。線程優先順序是一個int變數(從1-10),1代表最低優先順序,10代表最高優先順序。
㈤ java中運算符優先順序最高的是
在Java中,棗搜頃運算符優先順序最高的是小漏帶括弧 "()" ,它用於改變表達式中的優先順序關系。使用小括弧可以使表達式的計算順序更加明確和准確,從而避免由於缺少括弧導致的計算結果錯誤。
當一個表達式中包含多個運算符時,Java會按照一定規則自動分配優先順序,以確定每個運算符所屬的優先順序和執行順序。而括弧可以覆蓋默認的優先順序順序,使得凳陸括弧內的表達式首先被計算。因此,在Java中使用小括弧是一個非常重要的編程技巧,可以幫助程序員更好地控製表達式的計算順序並提高代碼的可讀性和可維護性。
㈥ Java多線程的優先順序
優先順序線程的優先順序(Priority)告訴調試程序該線程的重要程度有多大 如果有大量線程都被堵塞 都在等候運行 調試程序會首先運行具有最高優先順序的那個線程 然而 這並不表示喊咐優先順序較低的線程不會運行(換言之 不會因為存在優先順序而導致死鎖) 若線程的優先順序較低 只不過表示它被准許運行的機會小一些而已 可用getPriority()方法讀取一個線程的優先順序 並用setPriority()改變它 在下面這個程序片中 大家會發現計數器的計數速度慢了下來 因為它們關聯的線程分配了較低的優先順序 //: Counter java// Adjusting the priorities of threadsimport java awt *;import java awt event *;import java applet *;class Ticker extends Thread { private Button b = new Button( Toggle ) incPriority = new Button( up ) decPriority = new Button( down ); private TextField t = new TextField( ) pr = new TextField( ); // Display priority private int count = ; private boolean runFlag = true; public Ticker (Container c) { b addActionListener(new ToggleL()); incPriority addActionListener(new UpL()); decPriority addActionListener(new DownL()); Panel p = new Panel(); p add(t); p add(pr); p add(b); p add(incPriority); p add(decPriority); c add(p); } class ToggleL implements ActionListener { public void actionPerformed(ActionEvent e) { runFlag = !runFlag; } } class UpL implements ActionListener { public void actionPerformed(ActionEvent e) { int newPriority = getPriority() + ; if(newPriority > Thread MAX_PRIORITY) newPriority = Thread MAX_PRIORITY; setPriority(newPriority); } } class DownL implements ActionListener { public void actionPerformed(ActionEvent e) { int newPriority = getPriority() ; if(newPriority < Thread MIN_PRIORITY) newPriority = Thread MIN_PRIORITY; setPriority(newPriority); } } public void run() { while (true) { if(runFlag) { t setText(Integer toString(count++)); pr setText( Integer toString(getPriority())); } yield(); } }}灶滲肢public class Counter extends Applet { private Button 隱世 start = new Button( Start ) upMax = new Button( Inc Max Priority ) downMax = new Button( Dec Max Priority ); private boolean started = false; private static final int SIZE = ; private Ticker [] s = new Ticker [SIZE]; private TextField mp = new TextField( ); public void init() { for(int i = ; i < s.length; i++) s[i] = new Ticker2(this); add(new Label("MAX_PRIORITY = " + Thread.MAX_PRIORITY)); add(new Label("MIN_PRIORITY = " + Thread.MIN_PRIORITY)); add(new Label("Group Max Priority = ")); add(mp); add(start); add(upMax); add(downMax); start.addActionListener(new StartL()); upMax.addActionListener(new UpMaxL()); downMax.addActionListener(new DownMaxL()); showMaxPriority(); // Recursively display parent thread groups: ThreadGroup parent = s[0].getThreadGroup().getParent(); while(parent != null) { add(new Label( "Parent threadgroup max priority = " + parent.getMaxPriority())); parent = parent.getParent(); } } public void showMaxPriority() { mp.setText(Integer.toString( s[0].getThreadGroup().getMaxPriority())); } class StartL implements ActionListener { public void actionPerformed(ActionEvent e) { if(!started) { started = true; for(int i = 0; i < s.length; i++) s[i].start(); } } } class UpMaxL implements ActionListener { public void actionPerformed(ActionEvent e) { int maxp = s[0].getThreadGroup().getMaxPriority(); if(++maxp > Thread.MAX_PRIORITY) maxp = Thread.MAX_PRIORITY; s[0].getThreadGroup().setMaxPriority(maxp); showMaxPriority(); } } class DownMaxL implements ActionListener { public void actionPerformed(ActionEvent e) { int maxp = s[0].getThreadGroup().getMaxPriority(); if(--maxp < Thread.MIN_PRIORITY) maxp = Thread.MIN_PRIORITY; s[0].getThreadGroup().setMaxPriority(maxp); showMaxPriority(); } } public static void main(String[] args) { Counter5 applet = new Counter5(); Frame aFrame = new Frame("Counter5"); aFrame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); aFrame.add(applet, BorderLayout.CENTER); aFrame.setSize(300, 600); applet.init(); applet.start(); aFrame.setVisible(true); }} ///:~Ticker採用本章前面構造好的形式,但有一個額外的TextField(文本欄位),用於顯示線程的優先順序;以及兩個額外的按鈕,用於人為提高及降低優先順序。WInGWit.也要注意yield()的用法,它將控制權自動返回給調試程序(機制)。若不進行這樣的處理,多線程機制仍會工作,但我們會發現它的運行速度慢了下來(試試刪去對yield()的調用)。亦可調用sleep(),但假若那樣做,計數頻率就會改由sleep()的持續時間控制,而不是優先順序。Counter5中的init()創建了由10個Ticker2構成的一個數組;它們的按鈕以及輸入欄位(文本欄位)由Ticker2構建器置入窗體。Counter5增加了新的按鈕,用於啟動一切,以及用於提高和降低線程組的最大優先順序。除此以外,還有一些標簽用於顯示一個線程可以採用的最大及最小優先順序;以及一個特殊的文本欄位,用於顯示線程組的最大優先順序(在下一節里,我們將全面討論線程組的問題)。最後,父線程組的優先順序也作為標簽顯示出來。按下「up」(上)或「down」(下)按鈕的時候,會先取得Ticker2當前的優先順序,然後相應地提高或者降低。運行該程序時,我們可注意到幾件事情。首先,線程組的默認優先順序是5。即使在啟動線程之前(或者在創建線程之前,這要求對代碼進行適當的修改)將最大優先順序降到5以下,每個線程都會有一個5的默認優先順序。最簡單的測試是獲取一個計數器,將它的優先順序降低至1,此時應觀察到它的計數頻率顯著放慢。現在試著再次提高優先順序,可以升高回線程組的優先順序,但不能再高了。現在將線程組的優先順序降低兩次。線程的優先順序不會改變,但假若試圖提高或者降低它,就會發現這個優先順序自動變成線程組的優先順序。此外,新線程仍然具有一個默認優先順序,即使它比組的優先順序還要高(換句話說,不要指望利用組優先順序來防止新線程擁有比現有的更高的優先順序)。最後,試著提高組的最大優先順序。可以發現,這樣做是沒有效果的。我們只能減少線程組的最大優先順序,而不能增大它。 lishixin/Article/program/Java/gj/201311/27587
㈦ 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操作。++和--運算符既可以作為前綴運算符,也可以做為後綴運算符。雙目整數運算符是:運算符操作**+加-減*乘/除%取模&位與|位或^位異或<<左移 >>右移(帶符號) >>>添零右移整數除法按零舍入。除法和取模遵守以下等式:
㈧ JAVA的運算符的優先順序是什麼樣的
所有的數學運算都認為是從左向右運算的,Java語言中大部分運算符也是從左向右結合的,只有單目運算符、賦值運算符和三目運算符例外,其中,單目運算符、賦值運算符和三目運算符是從右向左結合的,也就是從右向左運算。另外,Java 語言中運算符的優先順序共分為 14 級,其中 1 級最高,14 級最低。在同一個表達式中運算符優先順序高的先執行。如下是優先順序和結合性。
結合性是指如果遇到同一優先順序的運算符,程序的執行順序。比如!和++同時存在,它會先加,然後再去比較是否相等。
㈨ java線程優先順序的使用 在線等 求指教
setPriority這個方法就是設置線程的優先順序。數游直接用thread的對象調用setPriority()裡面給對應的數野伍值就行
1-10但是需要注意的是,java虛擬機對線程管理並不依賴於優先順序,有的薯脊銷時候設置不會生效。Thread有三個常量Thread.MAX_PRIORITY
Thread.MIN_PRIORITY
Thread.NORMAL_PRIORITY
Thread.MAX_PRIORITY=10
Thread.MIN_PRIORITY=1
Thread.NORMAL_PRIORITY=5
所以1是最小的
10是最大的
5是正常的。
㈩ JAVA運算優先順序
先運算b+2=22,然後是a-=22,a=-12.最後是 a+=-12, a=-2.
運算符優先順序表
優先順序 運算符 結合性
1 () [] . 從左到右
2 ! +(正) -(負) ~ ++ -- 從右向左
3 * / % 從左向右
4 +(加) -(減) 從左向右
5 << >> >>> 從左向右
6 < <= > >= instanceof 從左向右
7 == != 從左向右
8 &(按位與) 從左向右
9 ^ 從左向右
10 | 從左向右
11 && 從左向右
12 || 從左向右
13 ?: 從右向左
14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 從右向左