day02(下)_运算符
?
首先了解java運算符的優先級和結合性:
?
常用轉義字符表:
????
示例1 取余/字符串/轉義字符:
class operator1 {public static void main(String[] args){//取余System.out.println(-1%5);//-1System.out.println(1%-5);//1與左邊的操作數同號System.out.println(3.1%2.5);//字符串:字符串數據和任何數據使用+都是相連接//,最終變成字符串System.out.println("ab"+5+5);//"ab55"int a=3,b=4;System.out.println("a="+a+",b="+b);//"a=3,b=4"(加雙引號表示其為字符串)//轉義字符:每一個轉義字符是一個單一字符 '\n'System.out.println("java\rev");//evvaSystem.out.println("java\nev");//java//evSystem.out.println("\\n");//"\n"char ch='好';//一個中文2byte,char型2byteSystem.out.println(ch);System.out.println("& "+(12&23));//4//System.out.println("&& "+(12&&23));//錯誤,不能用于非boolean類型運算System.out.println("^ "+(12^23));//27System.out.println("^ "+(true^false));//true//^,&既能用于數值運算,也可以用于boolean型運算}}運行結果:
在以上的例子中注意'\r'和'\n'區別:\n 是回車+換行 把光標 先移到 行首 然后換到下一行 也就是 下一行的行首拉
\r 就是return 回到 本行 行首 這就會把這一行以前的輸出 覆蓋掉
\t:一個"制表區"占8列.
參考文章:http://hane00.blog.163.com/blog/static/1600615220126204446809/
示例二:賦值運算符/位運算符
class operator2 {public static void main(String[] args){//+=,/=,*=......short s=5;//s=s+5;//報錯,s+5結果為int,不能賦值給short型(做了兩次運算)s += 5;//成功,原因:首先做了一次運算:把左右兩邊的和//賦值給左邊,和short s=5;類似.+=運算符給s賦值時自動完成//強轉操作System.out.println("s="+s);//關于^:假設兩個數a,b,則有:a^b^b=a,應用到兩數交換int a=4,b=5;a=a^b;b=a^b;//相當于(a^b)^b為a,賦值給了ba=a^b;//相當于(a^b)^a為b,賦值給了aSystem.out.println("a="+a+",b="+b);//一般仍采用第三方變量(temp)進行交換}}運行結果:
示例3:條件運算符結果類型
class operator3 {public static void main(String[] args) {char x='X';//對int類型的常量進行測試int i=12;System.out.println(true?x:12);//XSystem.out.println(true?x:i);//88//對long類型的常量進行測試long l=12L;System.out.println(true?x:12L);//88System.out.println(true?x:l);//88//對float類型的常量進行測試double d=12.0;System.out.println(true?x:12.0);//88.0System.out.println(true?x:d);//88.0}}
運行結果:
確定條件表達式結果類型的規則過于冗長和復雜,很難完全記住它們,但是其核心就是一下三點:
- 如果第二個和第三個操作數具有相同的類型,那么它就是條件表達式的類型。換句話說,你可以通過繞過混合類型的計算來避免大麻煩。
?
- 如果一個操作數的類型是T,T表示byte、short或char,而另一個操作數是一個int類型的常量表達式,它的值是可以用類型T表示的,那么條件表達式的類型就是T。
?
- 否則,將對操作數類型運用二進制數字提升,而條件表達式的類型就是第二個和第三個操作數被提升之后的類型。
關于第三點:個人理解為應該向? 占用字節多(精度高)的類型 提升
還有一點:三元運算符運算完必須要有結果.
?? 例如:
?????? 20>10?System.out.println("20"):System.out.println("10");//運行失敗,但是C語言可以.
原文地址:http://www.cnblogs.com/gw811/archive/2012/10/28/2743586.html
?
最后總結一下if-else和switch什么時候用?
? 具體數值判斷,數值不多,而是符合 char,short,byte,int(switch可選擇的類型,隨著JDK版本提升,可能會添加一些類型(字符串,枚舉))
?? 建議用switch,效率稍高,因為switch列出了所有可能.
?
?? 其它情況,對區間判斷,對結果為boolean型判斷,用if,if使用范圍更廣
???
?
?
??
----android培訓 、java培訓、期待與您交流!----
轉載于:https://www.cnblogs.com/yiqiu2324/archive/2013/01/14/2859380.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的day02(下)_运算符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 制作vb dll的总结
- 下一篇: DNN Experience