您的位置:首页 > 其它

复习笔记3 算数运算符 转义字符 转义序列 前后自增自减的区别

2012-05-14 22:15 459 查看
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("=================================>");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: