本文目錄一覽:
- 1、Java的造型運算符
- 2、什麼是java運算符
- 3、java中的運算符都有哪些
- 4、Java運算符?
- 5、Java中的運算符有哪些
- 6、java運算符
Java的造型運算符
造型 (Cast)的作用是 與一個模型匹配 在適當的時候 Java會將一種數據類型自動轉換成另一種 例如 假設我們為浮點變量分配一個整數值 計算機會將int自動轉換成float 通過造型 我們可明確設置這種類型的轉換 或者在一般沒有可能進行的時候強迫它進行 為進行一次造型 要將括號中希望的數據類型(包括所有修改符)置於其他任何值的左側 下面是一個例子 void casts() {int i = ;long l = (long)i;long l = (long) ;}正如您看到的那樣 既可對一個數值進行造型處理 亦可對一個變量進行造型處理 但在這兒展示的兩種情況下 造型均是多餘的 因為編譯器在必要的時候會自動進行int值到long值的轉換 當然 仍然可以設置一個造型 提醒自己留意 也使程序更清楚 在其他情況下 造型只有在代碼編譯時才顯出重要性 在C和C++中 造型有時會讓人頭痛 在Java里 造型則是一種比較安全的操作 但是 若進行一種名為 縮小轉換 (Narrowing Conversion)的操作(也就是說 腳本是能容納更多信息的數據類型 將其轉換成容量較小的類型) 此時就可能面臨信息丟失的危險 此時 編譯器會強迫我們進行造型 就好象說 這可能是一件危險的事情——如果您想讓我不顧一切地做 那麼對不起 請明確造型 而對於 放大轉換 (Widening conversion) 則不必進行明確造型 因為新類型肯定能容納原來類型的信息 不會造成任何信息的丟失 Java允許我們將任何主類型 造型 為其他任何一種主類型 但布爾值(bollean)要除外 後者根本不允許進行任何造型處理 類 不允許進行造型 為了將一種類轉換成另一種 必須採用特殊的方法(字串是一種特殊的情況 本書後面會講到將對象造型到一個類型 家族 里 例如 橡樹 可造型為 樹 反之亦然 但對於其他外來類型 如 巖石 則不能造型為 樹 ) 字面值 最開始的時候 若在一個程序里插入 字面值 (Literal) 編譯器通常能準確知道要生成什麼樣的類型 但在有些時候 對於類型卻是曖昧不清的 若發生這種情況 必須對編譯器加以適當的 指導 方法是用與字面值關聯的字符形式加入一些額外的信息 下面這段代碼向大家展示了這些字符 //: Literals javaclass Literals { char c = xffff; // max char hex value byte b = x f; // max byte hex value short s = x fff; // max short hex value int i = x f; // Hexadecimal (lowercase) int i = X F; // Hexadecimal (uppercase) int i = ; // Octal (leading zero) // Hex and Oct also work with long long n = L; // long suffix long n = l; // long suffix long n = ; //! long l ( ); // not allowed float f = ; float f = F; // float suffix float f = f; // float suffix float f = e f; // to the power float f = e+ f; // float suffix double d = d; // double suffix double d = D; // double suffix double d = e d; // to the power} ///:~十六進制(Base )——它適用於所有整數數據類型——用一個前置的 x或 X指示 並在後面跟隨採用大寫或小寫形式的 以及a f 若試圖將一個變量初始化成超出自身能力的一個值(無論這個值的數值形式如何) 編譯器就會向我們報告一條出錯消息 注意在上述代碼中 最大的十六進制值只會在char byte以及short身上出現 若超出這一限制 編譯器會將值自動變成一個int 並告訴我們需要對這一次賦值進行 縮小造型 這樣一來 我們就可清楚獲知自己已超載了邊界 八進制(Base )是用數字中的一個前置 以及 的數位指示的 在C C++或者Java中 對二進制數字沒有相應的 字面 表示方法 字面值後的尾隨字符標誌着它的類型 若為大寫或小寫的L 代表long 大寫或小寫的F 代表float 大寫或小寫的D 則代表double 指數總是採用一種我們認為很不直觀的記號方法 e f 在科學與工程學領域 e 代表自然對數的基數 約等於 (Java一種更精確的double值採用Math E的形式) 它在象 ×e的 次方 這樣的指數表達式中使用 意味着 × 的 次方 然而 自FORTRAN語言發明後 人們自然而然地覺得e代表 多少次冪 這種做法顯得頗為古怪 因為FORTRAN最初面向的是科學與工程設計領域 理所當然 它的設計者應對這樣的混淆概念持謹慎態度(注釋①) 但不管怎樣 這種特別的表達方法在C C++以及現在的Java中頑固地保留下來了 所以倘若您習慣將e作為自然對數的基數使用 那麼在Java中看到象 e f 這樣的表達式時 請轉換您的思維 從程序設計的角度思考它 它真正的含義是 × 的 次方 ① John Kirkham這樣寫道 我最早於 年在一部IBM 機器上使用FORTRAN II 那時——包括 年代以及 年代的早期 FORTRAN一直都是使用大寫字母 之所以會出現這一情況 可能是由於早期的輸入設備大多是老式電傳打字機 使用 位Baudot碼 那種碼並不具備小寫能力 乘冪表達式中的 E 也肯定是大寫的 所以不會與自然對數的基數 e 發生衝突 後者必然是小寫的 E 這個字母的含義其實很簡單 就是 Exponential 的意思 即 指數 或 冪數 代表計算系統的基數——一般都是 當時 八進制也在程序員中廣泛使用 儘管我自己未看到它的使用 但假若我在乘冪表達式中看到一個八進制數字 就會把它認作Base 我記得第一次看到用小寫 e 表示指數是在 年代末期 我當時也覺得它極易產生混淆 所以說 這個問題完全是自己 潛入 FORTRAN里去的 並非一開始就有 如果你真的想使用自然對數的基數 實際有現成的函數可供利用 但它們都是大寫的 注意如果編譯器能夠正確地識別類型 就不必使用尾隨字符 對於下述語句 long n = ;它並不存在含混不清的地方 所以 後面的一個L大可省去 然而 對於下述語句 float f = e f; // 的冪數編譯器通常會將指數作為雙精度數(double)處理 所以假如沒有這個尾隨的f 就會收到一條出錯提示 告訴我們須用一個 造型 將double轉換成float 轉型 大家會發現假若對主數據類型執行任何算術或按位運算 只要它們 比int小 (即char byte或者short) 那麼在正式執行運算之前 那些值會自動轉換成int 這樣一來 最終生成的值就是int類型 所以只要把一個值賦回較小的類型 就必須使用 造型 此外 由於是將值賦回給較小的類型 所以可能出現信息丟失的情況) 通常 表達式中最大的數據類型是決定了表達式最終結果大小的那個類型 若將一個float值與一個double值相乘 結果就是double 如將一個int和一個long值相加 則結果為long lishixinzhi/Article/program/Java/JSP/201311/19534
什麼是java運算符
Java的運算符可分為4類:算術運算符、關係運算符、邏輯運算符和位運算符。
1.算術運算符
Java的算術運算符分為一元運算符和二元運算符。一元運算符只有一個操作數;二元運算符有兩個操作數,運算符位於兩個操作數之間。算術運算符的操作數必須是數值類型。
(1)一元運算符:
一元運算符有:正(+)、負(-)、加1(++)和減1(--)4個。
加1、減1運算符只允許用於數值類型的變量,不允許用於表達式中。加1、減1運算符既可放在變量之前(如++i),也可放在變量之後(如i++),兩者的差別是:如果放在變量之前(如++i),則變量值先加1或減1,然後進行其他相應的操作(主要是賦值操作);如果放在變量之後(如i++),則先進行其他相應的操作,然後再進行變量值加1或減1。
例如:
int i=6,j,k,m,n;
j = +i; //取原值,即j=6
k = -i; //取負值,即k=-6
m = i++; //先m=i,再i=i+1,即m=6,i=7
m = ++i; //先i=i+1,再m=i,即i=7,m=7
n = j–; //先n=j,再j=j-1,即n=6,j=5
n = –j; //先j=j-1,再n=j,即j=5,n=5
在書寫時還要注意的是:一元運算符與其前後的操作數之間不允許有空格,否則編譯時會出錯。
(2)二元運算符
二元運算符有:加(+)、減(-)、乘(*)、除(/)、取余(%)。其中+、-、*、/完成加、減、乘、除四則運算,%是求兩個操作數相除後的餘數。
%求余操作舉例:
a % b = a - (a / b) * b
取余運算符既可用於兩個操作數都是整數的情況,也可用於兩個操作數都是浮點數(或一個操作數是浮點數)的情況。當兩個操作數都是浮點數時,例如7.6 % 2.9時,計算結果為:7.6 - 2 * 2.9 = 1.8。
當兩個操作數都是int類型數時,a%b的計算公式為:
a % b = a - (int)(a / b) * b
當兩個操作數都是long類型(或其他整數類型)數時,a%b的計算公式可以類推。
當參加二元運算的兩個操作數的數據類型不同時,所得結果的數據類型與精度較高(或位數更長)的那種數據類型一致。
例如:
7 / 3 //整除,運算結果為2
7.0 / 3 //除法,運算結果為2.33333,即結果與精度較高的類型一致
7 % 3 //取余,運算結果為1
7.0 % 3 //取余,運算結果為1.0
-7 % 3 //取余,運算結果為-1,即運算結果的符號與左操作數相同
7 % -3 //取余,運算結果為1,即運算結果的符號與左操作數相同
2.關係運算符
關係運算符用於比較兩個數值之間的大小,其運算結果為一個邏輯類型的數值。關係運算符有六個:等於(==)、不等於(!=)、大於()、大於等於(=)、小於()、小於等於(=)。
例如:
9 = 8 //運算結果為false
9.9 = 8.8 //運算結果為true
‘A’ ‘a’ //運算結果為true,因字符’A’的Unicode編碼值小於字符’a’的
要說明的是,對於大於等於(或小於等於)關係運算符來說,只有大於和等於兩種關係運算都不成立時其結果值才為false,只要有一種(大於或等於)關係運算成立其結果值即為true。例如,對於9 = 8,9既不小於8也不等於8,所以9 = 8 的運算結果為false。對於9 = 9,因9等於9,所以9 = 9的運算結果為true。
3.邏輯運算符
邏輯運算符要求操作數的數據類型為邏輯型,其運算結果也是邏輯型值。邏輯運算符有:邏輯與()、邏輯或(||)、邏輯非(!)、邏輯異或(^)、邏輯與()、邏輯或(|)。
真值表是表示邏輯運算功能的一種直觀方法,其具體方法是把邏輯運算的所有可能值用表格形式全部羅列出來。Java語言邏輯運算符的真值表如下:
邏輯運算符的真值表
A B AB A||B !A A^B AB A|B
false false false false true false false false
true false false true false true false true
false true false true true true false true
true true true true false false true true
前兩列是參與邏輯運算的兩個邏輯變量,共有4種可能,所以表2.5共有4行。後6列分別是6個邏輯運算符在邏輯變量A和邏輯變量B取不同數值時的運算結果值。
要說明的是,兩種邏輯與(和)的運算規則基本相同,兩種邏輯或(||和|)的運算規則也基本相同。其區別是:和|運算是把邏輯表達式全部計算完,而和||運算具有短路計算功能。所謂短路計算,是指系統從左至右進行邏輯表達式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。對於運算來說,只要運算符左端的值為false,則因無論運算符右端的值為true或為false,其最終結果都為false。所以,系統一旦判斷出運算符左端的值為false,則系統將終止其後的計算過程;對於 || 運算來說,只要運算符左端的值為true,則因無論運算符右端的值為true或為false,其最終結果都為true。所以,系統一旦判斷出|| 運算符左端的值為true,則系統將終止其後的計算過程。
例如,有如下邏輯表達式:
(i=1) (i=100)
此時,若i等於0,則系統判斷出i=1的計算結果為false後,系統馬上得出該邏輯表達式的最終計算結果為false,因此,系統不繼續判斷i=100的值。短路計算功能可以提高程序的運行速度。
作者建議讀者:在程序設計時使用和||運算符,不使用和|運算符。
用邏輯與()、邏輯或(||)和邏輯非(!)可以組合出各種可能的邏輯表達式。邏輯表達式主要用在 if、while等語句的條件組合上。
例如:
int i = 1;
while(i=1) (i=100) i++; //循環過程
上述程序段的循環過程將i++語句循環執行100次。
4.位運算符
位運算是以二進制位為單位進行的運算,其操作數和運算結果都是整型值。
位運算符共有7個,分別是:位與()、位或(|)、位非(~)、位異或(^)、右移()、左移()、0填充的右移()。
位運算的位與()、位或(|)、位非(~)、位異或(^)與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的操作數和運算結果都是二進制整數,而邏輯運算相應操作的操作數和運算結果都是邏輯值。
位運算示例
運算符 名稱 示例 說明
位與 xy 把x和y按位求與
| 位或 x|y 把x和y按位求或
~ 位非 ~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
右移 xy 把x的各位右移y位
左移 xy 把x的各位左移y位
右移 xy 把x的各位右移y位,左邊填0
舉例說明:
(1)有如下程序段:
int x = 64; //x等於二進制數的01000000
int y = 70; //y等於二進制數的01000110
int z = xy //z等於二進制數的01000000
即運算結果為z等於二進制數01000000。位或、位非、位異或的運算方法類同。
(2)右移是將一個二進制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數為正時),或者補1(當該數為負時)。這是因為整數在機器內部採用補碼錶示法,正數的符號位為0,負數的符號位為1。例如,對於如下程序段:
int x = 70; //x等於二進制數的01000110
int y = 2;
int z = xy //z等於二進制數的00010001
即運算結果為z等於二進制數00010001,即z等於十進制數17。
對於如下程序段:
int x = -70; //x等於二進制數的11000110
int y = 2;
int z = xy //z等於二進制數的11101110
即運算結果為z等於二進制數11101110,即z等於十進制數-18。要透徹理解右移和左移操作,讀者需要掌握整數機器數的補碼錶示法。
(3)0填充的右移()是不論被移動數是正數還是負數,左邊移進的部分一律補0。
5.其他運算符
(1)賦值運算符與其他運算符的簡捷使用方式
賦值運算符可以與二元算術運算符、邏輯運算符和位運算符組合成簡捷運算符,從而可以簡化一些常用表達式的書寫。
賦值運算符與其他運算符的簡捷使用方式
運算符 用法 等價於 說明
+= s+=i s=s+i s,i是數值型
-= s-=i s=s-i s,i是數值型
*= s*=i s=s*i s,i是數值型
/= s/=i s=s/i s,i是數值型
%= s%=i s=s%i s,i是數值型
= a=b a=ab a,b是邏輯型或整型
|= a|=b a=a|b a,b是邏輯型或整型
^= A^=b a=a^b a,b是邏輯型或整型
= s=i s=si s,i是整型
= s=i s=si s,i是整型
= s=i s=si s,i是整型
(2)方括號[]和圓括號()運算符
方括號[]是數組運算符,方括號[]中的數值是數組的下標,整個表達式就代表數組中該下標所在位置的元素值。
圓括號()運算符用於改變表達式中運算符的優先級。
(3)字符串加(+)運算符
當操作數是字符串時,加(+)運算符用來合併兩個字符串;當加(+)運算符的一邊是字符串,另一邊是數值時,機器將自動將數值轉換為字符串,這種情況在輸出語句中很常見。如對於如下程序段:
int max = 100;
System.out.println(”max = “+max);
計算機屏幕的輸出結果為:max = 100,即此時是把變量max中的整數值100轉換成字符串100輸出的。
(4)條件運算符(?:)
條件運算符(?:)的語法形式為:
表達式1 ?表達式2 : 表達式3
條件運算符的運算方法是:先計算表達式1的值,當表達式1的值為true時,則將表達式2的值作為整個表達式的值;當表達式1的值為false時,則將表達式3的值作為整個表達式的值。如:
int a=1,b=2,max;
max = ab?a:b; //max等於2
(5)強制類型轉換符
強制類型轉換符能將一個表達式的類型強制轉換為某一指定數據類型,其語法形式為:
(類型)表達式
(6)對象運算符instanceof
對象運算符instanceof用來測試一個指定對象是否是指定類(或它的子類)的實例,若是則返回true,否則返回false。
(7)點運算符
點運算符“.”的功能有兩個:一是引用類中成員,二是指示包的層次等級。
6.運算符的優先級
以下按優先級從高到低的次序列出Java語言中的所有運算符,表中結合性一列中的“左右”表示其運算次序為從左向右,“右左”表示其運算次序為從右向左。
優先級 運算符 結合性
1 . [] () ; ,
2 ++ ―― += ! ~ +(一元) -(一元) 右左
3 * / % 左右
4 +(二元) -(二元) 左右
5 左右
6 = = instanceof 左右
7 = = != 左右
8 左右
9 ^ 左右
10 | 左右
11 左右
12 || 左右
13 ?: 右左
14 = *= /= %= += -= = = = = ^= |= 右左
—-我也是轉載的 括弧笑
java中的運算符都有哪些
在Java中包含的運算符有:算數運算符,邏輯運算符,關係運算符等。
算數運算符也就是我們平時的加減乘除余等操作:在Java中都是將右邊的值賦值給左邊,所以一般格式為:結果 = 值;
加(+):result = value1 + value2;例如 result = 10 + 10;結果result值為20;
減(-):result = value1 – value2; 例如 result = 20 – 10; 結果result值為10;
乘(*): result = value1 * value2; 例如 result = 20 * 10; 結果result值為200;
除(/): result = value1 / value2; 例如result = 20 / 10;結果result值為2;如果value2的值為0,則Java會拋出一個異常;
余(%):求余,即獲取不能除盡的值,result = value1 % value2;例如result = 12 % 5;result結果為2;
自增(++):value++或者++value;意思是將value的值加1;自增有兩種寫法,一種是++在前面,一種是++在後面,這兩種單獨使用的時候沒有區別,但是和其他變量或者其他語法一起使用的時候,就有區別了,++在前說明是先將value加1然後在計算;++在後面說明先使用value在進行value加1;例如value = 10;result = value++; result的結果為10,value結果為11,因為++在後面所以先使用value賦值給result,然後value在進行加1;在如:result = ++value; result 的結果為11,value的結果為11;因為++在前面,所以value值先加一變成了11,然後再將value值賦值給result,所以result的結果為11;
自減(–):與自增一樣的邏輯,只不過是將自身進行減1;
邏輯運算符:(並且) ||(或) !(非),邏輯運算符判斷的變量為boolean,只有true與false;
並且():result = value1 value2;當value1與value2都為true的時候,result的結果為true;當其中任何一個為false的時候,result結果為false;而且,當value1的值如果為false的時候,value2不會進行判斷,整個結果result的結果為false;例如if( value != null value.length() 10);如果value == null,則整個結果為false,並且value.length()不進行判斷;這樣如果value == null;則後面由於不會進行運算也就不會發生異常;
或(||):result = value1 || value2; 當value1與value2都為false的時候,result結果為false;如果有一個為true,那麼result結果為true;並且如果value1為true的時候,value2不需要進行判斷,result為true;
非(!): result = !value; result的結果與value的結果相反;value為true,則result為false;value為false,則result為true;
關係運算符:((大於), =(大於等於), (小於), =(小於等於), ==(等於), !=(不等於)),關係運算法的結果為boolean類型的值,只有true或者false;
大於():判斷第一個值是否大於第二個值,如果滿足條件,則結果為true;否則為false;
大於等於(=):判斷第一個值是否大於等於第二個值;
小於():判斷第一個值是否小於第二個值;
小於等於(=):判斷第一個值是否小於等於第二個值;
等於(==):判斷兩個值是否相等;
不等於(!=):判斷兩個值是否不相等;
更多java學習方面的問題可以訪問這個網頁網頁鏈接,希望我的回答能幫到你。
Java運算符?
1.運算符
1)算術運算符
+-*/%++–
+:如果有加數為“”(字符串),表示連接
%:2%1 0
++:自增1 num++:先參與運算,然後在自增 ++num:先自增,再參與運算
–:自減1 num– –num
2)賦值運算符
= += -= *= /= %=……
num=3;
+= num+=3=num=num+3
左邊?=右邊=左邊=左邊?右邊
3)關係運算符
==!===
表達式的結果為:boolean類型
==:用來判斷兩個數是否相等
4)邏輯運算符
||!^|
結果類型:boolean類型
與:串聯,並且
或:並聯,或者
非:取反
異或:不同為真,相同為假
與: 區別:
:短路與,如果第一個能判斷出結果,則雲南電腦培訓認為後面的不再判斷
:所有的都會判斷
|| |區別:同上面
5)位運算符:
|~^
對數值按位操作:
63
00000110
00000011
00000010
:23=16補0
:162=4:正數補0,負數補1
:補0
三目運算符:
?:
條件表達式?結果1:結果2;
如果表達式結果為true:結果為結果1
否則為結果2
12?1:0;結果為0
Java中的運算符有哪些
1.算術運算符
Java的算術運算符分為一元運算符和二元運算符。一元運算符只有一個操作數;二元運算符有兩個操作數,運算符位於兩個操作數之間。算術運算符的操作數必須是數值類型。
(1)一元運算符:
一元運算符有:正(+)、負(-)、加1(++)和減1(--)4個。
加1、減1運算符只允許用於數值類型的變量,不允許用於表達式中。加1、減1運算符既可放在變量之前(如++i),也可放在變量之後(如i++),兩者的差別是:如果放在變量之前(如++i),則變量值先加1或減1,然後進行其他相應的操作(主要是賦值操作);如果放在變量之後(如i++),則先進行其他相應的操作,然後再進行變量值加1或減1。
java運算符
0x是十六進制,a是10,a2的二進制是1010這4位是a的部分,0010這是2的部分,然後組合到一起128+32+2就是162。,2就是除以2的次方。2就是乘2的二次方。因為你這個是int類型,所以算完了之後去掉小數點就是40。重點在這了,byte是字節的意思吧。大B字節小b位,字節最大是多少啊,255吧。本來你這個int是啥意思的我給你看下。
00000000 00000000 00000000 10100010
二進制全1的情況下一個最大字節是255,在java裡面byte取7位用來存儲,頭一位作符號位。就是說當這8位裡面第一位是0的時候表示的是這是個整數,是從0~127的正數,當頭一位是1的時候就是負數,因為byte是直接加載a2上的不是整個結果上的,所以這裡a2從16進制轉成2進制再去掉一位轉成java里的byte就是多少啊。32+2=34。34加上最前面那個-128=-94。然後是-94除以2的2次方。就這麼回事
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/242077.html