Java初级学习(四)Java运算符
1.Java运算符
*运算符的优先级要求:多用(),提高代码可读性,不要只依靠运算符的优先级,也不用刻意去记。
- 算术运算符:+ - * / %(取余) ++ --
- 赋值运算符:=
- 关系运算符:> < >= <= == !=(不等于) instanceof ========》这里结果是true或false
- 逻辑运算符:&&(与and,只有左右都为true时结果才为true) ||(或or) !(非no)
- 位运算符:
- 条件运算符:? :
1)算数运算符
(1)%:11除以5等于2余1,也就是 11%5=1
(2)++ --
前缀自增自减法(++i,--i): 先进行自增或者自减运算,再进行表达式运算。
*执行一次 i++ 或者 ++i 就等于执行一次 i=i+1 这条命令。
同理,执行一次 i-- 或者 --i 就等于执行一次 i=i-1 这条命令。
后缀自增自减法(i++,i--): 先进行表达式运算,再进行自增或者自减运算。
1 public class Demo04 { 2 public static void main(String[] args){ 3 4 int i = 2;//定义一个变量 5 //i=i+1;下面一行的++i,就相当于在执行给b赋值之前,先执行一遍i=i+1。 6 int a = ++i;//先运行i=i+1,再给b赋值。 7 int b = i++; 8 //i=i+1;上面一行的++i,就相当于在执行给b赋值之后,再执行一遍i=i+1。 9 System.out.println(a); 10 System.out.println("现在i为"+i); //这里i=3,因为上面有个++i 11 System.out.println("====================="); 12 13 //前缀自增自减,先进行自增自减,再进行表达式 14 int b1=2*++i; //2*(i+1)=8 15 System.out.println("现在i为"+i); //这里i=4,因为上面有两个++i 16 int c1=2*--i; //2*(i-1)=6 17 System.out.println("现在i为"+i); //这里i=3,因为上面有个--i 18 19 //后缀自增自减,先进行表达式,在进行自增自减。 20 int b2=2*i++; //先计算b2=2*i=6,后面的++也就是b2++,但是这里我要输出的就是b2,所以不看b++是多少。直接输出b2=6 21 System.out.println("现在i为"+i); //这里i=4,因为上面有一个i++ 22 int c2=2*i--; //与上面同理 23 System.out.println("现在i为"+i); //这里i=3,因为上面有一个i-- 24 System.out.println(b1); 25 System.out.println(c1); 26 System.out.println(b2); 27 System.out.println(c2); 28 29 } 30 }
i+1和i++的区别
1 public static void main(String[] args) { 2 //i+1与i++的区别 3 int i1 = 1; 4 int i2 = 1; 5 6 i1 = i1 + 1; 7 System.out.println(i1); //i1=2 8 i2 = i2++; 9 System.out.println(i2); //i2=1 10 }
Math类:
1 //Math类,pow方法表示次方,这里意为2^3 2 double pow = Math.pow(2, 3); 3 System.out.println(pow);
2)赋值运算符 int i = 1;
3)关系运算符
instanceof:用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)
运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。
1 //如果instanceof左侧的name是右侧的String类型,那么result就为true 2 String name = "James"; 3 boolean result = name instanceof String;
4)逻辑运算符
1 public class Demo05 { 2 public static void main(String[] args) { 3 int a=10; 4 int b=20; 5 System.out.println(a<11&&b<21); //true 6 System.out.println(a<11||b>21); //true 7 System.out.println(!(a<11||b>21)); //false 8 } 9 }
短路运算:当使用&&逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。
1 //短路运算 2 int d=5; 3 boolean e = (d<5)&&d++>10; 4 System.out.println(e); 5 System.out.println(d); //因为d<5为false,所以不会判断后面的是true还是false,所以不会执行d++,d仍然为5
5)位运算符
1 public class Demo06 { 2 public static void main(String[] args) { 3 int A = 60; //A = 60 = 00111100 4 int B = 13; //B = 13 = 00001101 5 int c=0; 6 c = A&B; 7 //只有1和1为1,1&1=1,1&0=0,0&0=0 8 System.out.println(c); //12=0000 1100 9 10 c = A|B; 11 //只有0|0为0,1|1=1,1|0=1,0|0=0 12 System.out.println(c); //0011 1101 13 14 c = A^B; 15 //相同为0,否则为1,1^1=0,0^0=0,1^0=1 16 System.out.println(c); //0011 0001 17 18 c = ~B; 19 //取反 20 System.out.println(c); //1111 0010 21 22 c= A<<2; 23 //按位左移 24 System.out.println(c); //A = 0011 1100 ===》1111 0000 25 26 c= A>>2; 27 //按位右移 28 System.out.println(c); //A = 0011 1100 ===》1111 29 30 c= A>>>2; 31 //按位右移补零操作符 32 System.out.println(c); //A = 0011 1100 ===》0000 1111 33 34 int d = 2; //0000 0010 35 //计算2^3,三种方法 36 int pow1 = d*d*d; 37 int pow2 = (int) Math.pow(d,3); 38 int pow3 = d<<2; //0000 0010 右移2位就是0000 1000,也就是8,2^3。 39 System.out.println(pow1); 40 System.out.println(pow2); 41 System.out.println(pow3); 42 } 43 }
6)条件运算符
1 public class Demo05 { 2 public static void main(String[] args) { 3 int a=10; 4 //条件运算符,如果a=10成立,那么c=20,否则c=30 5 int c=(a==10)?20:30; 6 System.out.println(c); 7 } 8 }
1 public static void main(String[] args) { 2 //逻辑运算符 3 int a=10; 4 int b=20; 5 //比较a、b的大小 6 int sum=a>b ? a:b; 7 System.out.println(sum); 8 9 //a=a+b的偷懒写法 10 a+=b; //a=a+b 11 System.out.println(a); //30 12 a-=b; //a=a-b 13 System.out.println(a); //-10 14 15 //字符串连接符 + 16 System.out.println(a+b); //30,这里会把+当做运算符 17 System.out.println(""+a+b); //1020,当运算中有String类型的值时,+会被当做连接符 18 System.out.println(a+b+""); //30,运算先后的问题,这里先运算了a+b,由于没有String类型在前面,就会被当做运算符。 19 }

浙公网安备 33010602011771号