public class Test4
{
public static void main(String[] args)
{
//算數運算符
int x = 0;
x = 1 + 2;
x = 2 - 1;
x = 2 / 1;
x = 2 * 1;
//除法並不會保留小數部分,也不會四捨五入
//而是捨棄全部的小數部分
x = 9 / 5;
System.out.println(x);
System.out.println("=================================>");
//一般爲了避免上邊的問題,都會先乘後除
//這在做百分比的時候經常會遇見
x = 5;
x = x / 100 * 100;
System.out.println(x);
x = 5;
x = x * 100 / 100;
System.out.println(x);
System.out.println("=================================>");
//表示正負
//這個只用在賦值上
x = -1;
x = +1;
//這麼寫是行,但是。。。無語
x = x + (-1);
x = x - (+1);
//取模,整除取餘
//模運算只看左邊正負,而不看右邊
x = 5 % 2;
System.out.println(x);
x = -5 % 2;
System.out.println(x);
x = 5 % -2;
System.out.println(x);
x = -5 % -2;
System.out.println(x);
System.out.println("=================================>");
//後自增自增
//這裏可以到,第一行打印,x並沒有自增
//而是第二行,x才自增的,可以把它看作
//syso(x) x++ syso(x)
x = 5;
System.out.println(x++);;
System.out.println(x);
System.out.println("=================================>");
//這裏發現跟上邊一樣的原理,所以兩個
//都是6,那麼可以看成是
//syso(x+1) x++ syso(x)
//我們考慮一個問題,如果用小括號把x++
//括起來呢,優先級是不是能解決問題?
x = 5;
System.out.println(x+++1);
System.out.println(x);
System.out.println("=================================>");
//很遺憾,()雖然會增加優先級,但並不
//會使後自增優先於x+1,那麼是不是應該
//理解成後自增是表達式完成之後呢?
x = 5;
System.out.println((x++)+1);
System.out.println(x);
System.out.println("=================================>");
//這裏發現並不是,因爲結果是11,也就是說
//後自增是在取值之後,而不是表達式結束之後
x = 5;
System.out.println(x+++x++);
System.out.println("=================================>");
//x的自增可以理解爲x參與1次不包括自身的運算之後
//當然這可以理解成在下次取值前自增
//詳細情況可以對比x++ + 1 和 x++ + x
x = 5;
System.out.println(x+++1+x++);
System.out.println("=================================>");
//前自增
x = 5;
System.out.println(++x);
System.out.println(x);
System.out.println("=================================>");
//6+7=13 這個沒什麼好說的,取值前自增
x = 5;
System.out.println((++x)+(++x));
System.out.println("=================================>");
//複合自增
//雖然這兩個例子的結果一樣,但要注意
//他們的自增執行順序
x=5;
System.out.println((x++)+(++x));
x=5;
System.out.println(++x+x++);
//無論怎麼劃分自增,結果都是11
//x++ + x = 5 + 6 = 11
//x + ++x = 5 + 6 = 11
x=5;
System.out.println(x+++x);
System.out.println("=================================>");
//自減
//與自增一樣,就不在說了
//+運算符重載
//這個地方就不寫了,一看就懂
String s = "a" + "b";
System.out.println(s);
s = "" + 1 + 2;
System.out.println(s);
s = ("" + 1) + 2;
System.out.println(s);
s = "" + (1 + 2);
System.out.println(s);
s = 1 + 2 + "";
System.out.println(s);
System.out.println("=================================>");
System.out.println();
//轉義字符
//八進制assci碼 範圍'\000' - '\377'
System.out.println('\141' == 'a');
//這裏要注意,asscii中的空字符'\0'跟空格是不一樣的
System.out.println('\0'==' ');
//unicode轉義字符 範圍'\u0000' - '\uffff'
//其中ascii編碼沒變,'\u0000' - '\u00ff'
System.out.println('\u0061' == 'a');
System.out.println("=================================>");
//轉義字符中的特殊字符
//以下兩個在JavaScript和sql中經常遇到,嵌套字符串
//雙引號字符
System.out.println('\"');
//單引號字符
System.out.println('\'');
//該轉移字符出現在java中的絕大部分相對路徑的寫法中
//而有些api中的相對路徑需要\\而寫成字符串就是\\\\
//反斜槓
System.out.println('\\');
//採用轉義序列可以避免一些問題導致的不兼容性
System.out.println("\134");
System.out.println("=================================>");
//轉義字符中的控制字符
//回車換行
//在windows中,換行需要2個\r\n
//在linux中,換行只需要\n
System.out.println("abc\raaa");
System.out.println("=================================>");
System.out.println("abc\naaa");
System.out.println("=================================>");
System.out.println("abc\r\naaa");
System.out.println("=================================>");
//換頁,沒用過。。。
System.out.println("abc\faaa");
//水平製表符 相當於table的功能,但有很多情況兼容性差
//所以一般還是多個空格來自定義製表符
System.out.println("abc\taaa");
//退格
//很少會用到,subString比他好用多了
System.out.println("abc\b");
System.out.println("=================================>");
//這裏的4個雙引號很容讓人誤解成是需要打印的是2,也就是
//a的length和b的length
System.out.println("a\".length()+\"b".length());
//如果採用轉義序列來做,句簡單直觀多了,就是打印字符串的長度
System.out.println("a\034.length()+\034b".length());
System.out.println("=================================>");
}
}
複習筆記3 算數運算符 轉義字符 轉義序列 前後自增自減的區別
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.