一、运算符简介
-
算术运算符: +、-、*、/、%、++、-- 【加减乘除、模运算(取余数)、自增、自减】
-
赋值运算符:= 【int a = 10】
-
关系运算符:>、<、>=、<=、==、!=、instanceof 【大于、小于、大于等于、小于等于、等于、不等于、用来判断某个实例是不是某个类的实例】
-
逻辑运算符:&&、||、! 【与、或、非(取反)】
-
位运算符: &、|、^、~、>>、<<、>>> 【了解即可!】
-
条件运算符:?、: 【三元运算符,了解即可!】
-
扩展复制运算符:+=、-=、*=、/= 【了解即可!】
-
总结:优先级最高(),建议经常使用()来规整代码
二、算术运算
// 运算示例+-*/ int a = 10; int b = 20; int c = 25; int d = 25; System.out.println(a+b); //30 System.out.println(a-b); //-10 System.out.println(a*b); //200 System.out.println(a/b); //运算出现小数,需要使用double类型,0 System.out.println(a/(double)b); //正解,0.5 // 运算示例% ++ —— System.out.println(c%a); //c/a余数=1,所以输出为1 //++ 自增 一元运算符 //-- 自减 一元运算符 int a = 3; int b = a++; //先将a赋值给b,然后执行a = a + 1 System.out.println(a); //4 int c = ++a; //先执行a = a + 1,再将结果赋值给c System.out.println(a); //5 System.out.println(b); //3 System.out.println(c); //5 // 幂运算处理 2^3=2*2*2如下所示,很多运算我们会使用一些工具类去操作(如math类) double pow = Math.pow(2,3); System.out.println(pow); //8.0
三、算术运算-数据类型拓展
long a = 1212121212121212L; int b = 123; short c = 10; byte d = 8; System.out.println(a + b + c + d); //输出Long类型,1212121212121353 System.out.println(b + c + d); //输出int类型,141 System.out.println(c + d); //输出int类型,18 // 结论1,如果运算中只要有Long类型参与,则结果就是Long类型 // 结论2,如果运算中没有Long类型参与,不论是否有int类型参与,则结果就是int类型
四、关系运算-(>、<、==)
//关系运算符返回的结果: 正确 or 错误 int a = 10; int b = 20; int c = 21; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b);
五、逻辑运算
// 与(and) 或(or) 非(取反) boolean a = true; boolean b = false; System.out.println("a && b:"+(a&&b) ); //逻辑与运算,真真得真、真假得假,a && b:false System.out.println("a || b:"+(a||b) ); //逻辑或运算,真假得真、假假得假、真真得真,a || b:true System.out.println("!(a && b):"+!(a&&b) ); //逻辑非运算,非真即假,!(a && b):true //拓展:短路运算 int c = 5; //说明&&后面这段自增代码没有运行,换句话说,与运算中上来就是假,那后面就不会计算了 boolean d = (c<4)&&(c++<4); System.out.println(d); //false System.out.println(c); //5
六、位运算
/* A = 0011 1100 B = 0000 1101 --------------------------------------- A&B 0000 1100 11得1、10得0、00得0 A|B 0011 1101 00得0、01得1、11得1 A^B 0011 0001 11得0、00得0、10得1(异或) ~B 1111 0010 0取反得1、1取反得0(取反) --------------------------------------- 2*8 = 16 怎样让计算机最快运行 !!!位运算效率是极高!!! 左移<< 相当于*2 右移>> 相当于/2 二进制示例 十进制 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 0101 5 0000 0110 6 0000 0111 7 0000 1000 8 ... 0001 0000 16 ... */
七、拼接符号
int a = 10; int b = 20; a += b; //a = a+b a -= b; //a = a-b System.out.println(a); // 字符串连接符号 + System.out.println(a+b); //将a+b=10+20 System.out.println(""+a+b); //将 空字符串拼接10拼接20=1020 System.out.println(a+b+""); //先将 10+20=30 再拼接空字符串
八、条件运算(三元运算符)
// x ? y : z 是比较偷懒得流程控制写法,叫做三元运算 //如果x==true,则结果为y,否则结果为z int score = 40; String type = score < 60 ? "不及格" : "及格"; //必须掌握 System.out.println(type); //不及格
九、内存溢出
//操作比较大的数的时候,逐一溢出问题 // jdk7新特性,数字之间可以用下划线分割 int money = 1000000000; int money1 = 10_0000_0000; System.out.println(money); //1000000000 System.out.println(money1); //1000000000 int years = 20; int total = money*years; System.out.println(total); //输出 -1474836480,计算溢出了 //正解,不溢出 long total2 = money*((long)years); //-1474836480 System.out.println(total2); //20000000000