本文目錄一覽:
- 1、java邏輯運算符都有哪些
- 2、java 參數傳遞 規則
- 3、java中的邏輯符號,運算符(位運算符)個代表什麼
- 4、Java參數傳遞
- 5、Java在參數中用「 | 」符號是什麼原理?我說的不是指判斷true和false的或,而是參數中的「 | 」
- 6、java 中|| 和 && 這類的符號都表示什麼?
java邏輯運算符都有哪些
邏輯運算符包括 、||、!。其中 和 || 是雙目運算符,實現邏輯與、邏輯或;!是單目運算符,實現邏輯非。
結果為 boolean 型的變數或表達式可以通過邏輯運算符結合成為邏輯表達式。邏輯運算符 、|| 和 !按表 2 進行邏輯運算。
邏輯運算符的優先順序為:!運算級別最高, 運算高於 || 運算。!運算符的優先順序高於算術運算符,而 和 || 運算則低於關係運算符。結合方向是:邏輯非(單目運算符)具有右結合性,邏輯與和邏輯或(雙目運算符)具有左結合性。
擴展資料:
邏輯運算符的示例。
x0 x=100 //第一行語句
y%4==0 || y%3==0 //第二行語句
!(xy) //第三行語句
其中,第一行語句用於判斷 x 的值是否大於 0 且小於或等於 100,只有兩個條件同時成立結果才為真(true)。
第二行語句用於判斷 y 的值是否能被 4 或者 3 整除,只要有一個條件成立,結果就為真(true)。
第三行語句先比較 x 和 y,再將比較結果取反,即如果 x 大於 y 成立,則結果為假(false),否則為真(true)。
java 參數傳遞 規則
簡言之:Java都是值傳遞(pass-by-value)
在Java中,無非就是兩種類型,即基本類型和從Object繼承下來的對象類型,而對象類型又包括String這種一旦初始化就不可改變內容的類型和BufferString這種可以初始化後可
以改變內容的類型。
然後看一下代碼示例:
java 代碼
1.package test;
2.
3.public class Test {
1. public static void main(String args[]) {
2. Integer interger1, interger2;
3. int i, j;
4. interger1 = new Integer(10);
5. interger2 = new Integer(50);
6. i = 5;
7. j = 9;
8. System.out.println(“Before Swap, Interger1 is ” + interger1);
9. System.out.println(“Before Swap, Interger2 is ” + interger2);
10. swap(interger1, interger2);
11. System.out.println(“After Swap Interger1 is ” + interger1);
12. System.out.println(“After Swap Interger2 is ” + interger2);
13. System.out.println(“Before Swap i is ” + i);
14. System.out.println(“Before Swap j is ” + j);
15. swap(i, j);
16. System.out.println(“After Swap i is ” + i);
17. System.out.println(“After Swap j is ” + j);
18.
19. StringBuffer sb = new StringBuffer(“I am StringBuffer”);
20. System.out.println(“Before change, sb is ” + sb + “”);
21. change(sb);
22. System.out.println(“After change sb is ” + sb + “”);
23. }
24.
25. public static void swap(Integer ia, Integer ib) {
26. Integer temp = ia;
27. ia = ib;
28. ib = temp;
29. }
30.
31. public static void swap(int li, int lj) {
32. int temp = li;
33. li = lj;
34. lj = temp;
35. }
36.
37. public static void change(StringBuffer ia) {
38. ia.append(“, but my content can be changed”);
39. //ia = new StringBuffer(“,but my content can be changed”);
40. }
41.}
42.
輸出:
Before Swap, Interger1 is 10
Before Swap, Interger2 is 50
After Swap Interger1 is 10
After Swap Interger2 is 50
Before Swap i is 5
Before Swap j is 9
After Swap i is 5
After Swap j is 9
Before change, sb is I am StringBuffer
After change sb is I am StringBuffer, but my content can be changed
這很好解釋,對於基本類型諸如int,傳遞進去的是存放int值的「內存單元」的一個copy,所以函數swap裡面的int和外面的int根本就不是一個東西,當然不能反射出去影響外面
的int。而對於對象類型,我們同樣可以這樣認為,傳遞進去的是存放對象類型的指針的「內存單元」一個copy(雖然Java裡面沒有指針的概念,但這並不妨礙我們理解)。這樣,
在swap函數裡面,對其指針本身的值做任何操作當然不會影響外面的Integer,因為interger1和interger2的「內存單元」裡面的值是不變的,其指向的對象類型也是沒有變的。
然後這裡需要說明一個問題,就是StringBuffer這種類型的對象了。因為其內容是可以改變的,所以change函數裡面的「指針」通過類似「*」的操作,改變了StringBuffer對象的
本身,就顯而易見了。(StringBuffer對象本身只有一個副本)
java中的邏輯符號,運算符(位運算符)個代表什麼
算數運算符,+-*/(+=,-=,*=,、/*) p.s. 1/0 = NaN 無窮大。邏輯運算符,略轉義序列符(例舉),\b 退格, \t 製表, \n 換行(製圖、一般println), \r 回車, \” 雙引號, \’ 單引號p.s. 取決於os,並不常用。遞增/減 ++, –賦值 =比較 =,=, ==位移 ,, p.s. 圖形用到注釋,// 行注釋,/* */段注釋類型轉換, a = (int)b; //括弧。條件, if()… == a ? true : false //三目運算。正則表達式, 應用類,用到這再說。
LZ是學Java的新手吧。嗯,慢慢學
Java參數傳遞
Java的方法參數傳遞都是值傳遞。這個問題需要樓主慢慢理解,如果基礎薄弱(C、C++基礎弱)就記住就好。如果基礎好可以從內存角度理解。
從語法和簡單層面理解:str是一個String類型的對象,傳遞給changeStr方法,傳遞的是str的引用內容,方法內的changeStr(String value),value變數和str指向了同一個對象,但是value重新賦值後,它的指向改變了,但是str的指向不會發生,所以str的輸出還是「Hello」,而changeObjValue方法傳入的TEST的對象pt給changeObjValue(TEST ref),ref變數和pt變數指向了同一對象,之後通過改變了對象的內容,pt變數的指向沒變,但是執行的對象的變數變了。所以pt的ptValue值變了。
進一步理解,Java對字元串進行了特殊處理,因為字元串這種數據類型太常用了,為了節省內容提高效率。Java把字元串放入了常量池,所以我們沒辦法在運行時修改一個字元串對象的內容。也就是對value變數的賦值操作是重寫建立了一個對象。樓主可以測試經典的java String的代碼:
String a = “a”;
String b = “a”;
String c = new String(“a”);
String d = new String(“a”);
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
System.out.println(d==c);
再深入,Java沒有C和C++的指針概念,可以粗暴的理解Java的引用是一種特殊的指針(實際上Java盡量把程序猿從指針中解放出來,或者說避免直接操作內存對象)。有一種不負責的說法:Java的基本類型傳遞傳遞的是值,也就是值的副本,引用類型傳遞的時引用。但是要注意String對象的內容不可變,而且傳遞的引用指向不可變。運行時Java的局部變數在棧空間中(線程私有),對象在堆內存中(線程公有),changeStr方法相當於在堆內存中又開闢了一塊兒空間重寫分配了一個對象,但是str沒有指向這個新new出來的對象。而changeObjValue方法修改的pt指向的對象的內容也就是修改的是堆內存的數據,ref和pt指向的是一塊兒內存。所以pt的對象數據會變化。
Java在參數中用「 | 」符號是什麼原理?我說的不是指判斷true和false的或,而是參數中的「 | 」
這叫掩碼,在C編程中很常見。
SWT.MIN是一個整型常量,SWT.RESIZE也是一個整型常量,將它們按位或(|),就可以將兩者合併成一個參數傳遞到方法中,方法中再按位與()來解包傳遞的參數。
例:SWT.MIN是0010,SWT.RESIZE是0100,兩者按位或的結果就是0110,將0110作為參數傳遞給方法。方法內部拿到參數後,只要將參數按位與SWT.MIN,如果得到的結果不是0,那麼就說明傳遞了SWT.MIN;同理將參數按位與SWT.RESIZE,如果得到的結果不是0那麼就說明傳遞了SWT.RESIZE。
java 中|| 和 && 這類的符號都表示什麼?
和||是一種邏輯運算符,是邏輯與,當兩個數都為真,則結果為真。||是邏輯或,兩個數任意一個為真,則結果為真。
舉個例子:
1、a b
當a、b都為真時,結果為真。有一個為假或者都為假時結果為假。
2、a || b
當a、b有一個為真時,結果為真。a、b都為假時結果為假。
擴展資料:
在java中還有其他的邏輯符號,比如:!、|、
「!」是非運算符號,比如a為真,則!a則為假。a如果為假,則!a為真。
而「|」也是邏輯或,「」也是邏輯與,但是他們與「||」和「」有些區別,區別如下:
「」與「|」無論第一個判斷條件是否成立,邏輯運算符前後兩個條件都會進行判斷。
「」與「||」,前者第一個條件不成立,後面的條件均不進行判斷,返回false;後者第一個條件成立,後面的條件均不進行判斷,返回true。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250739.html