复习笔记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("=================================>");
	}
}

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