複習筆記3 算數運算符 轉義字符 轉義序列 前後自增自減的區別

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("=================================>");
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章