标签:计算 过程 print 实现 反码 强制类型转换 注意 练习题 static
/* ++,--运算符的使用: 单独使用: 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的) 参与运算使用: 放在操作数的前面,先自增或者自减,然后再参与运算。 放在操作数的后面,先参与运算,再自增或者自减。 作用:就是对变量进行自增1或者自减1。 */ public class Text3 { public static void main(String[] args) { //定义两个变量 int x = 3; int y = 4; //单独使用 //x++; //y--; ++x; --y; System.out.println("x:"+x+",y:"+y);//x++或者++x,单独使用时,输出的值都是一样,这里为4;y--或者--y,单独使用时,输出的值都是一样,这里为3 System.out.println("-------------------"); //参与运算使用 int a = 3; int b = 4; //int c = a++; //int d = b--; int e = ++a; int f = --b; System.out.println("a:"+a); //4 System.out.println("b:"+b); //3 //System.out.println("c:"+c); //3 //System.out.println("d:"+d); //4 System.out.println("e:"+e); //4 System.out.println("f:"+f); //3 } }
/* ++,--的练习题 第一题: int a = 10; int b = 10; int c = 10; a = b++; c = --a; b = ++a; a = c--; 请分别计算出a,b,c的值 第二题: int x = 4; int y = (x++)+(++x)+(x*10); 请分别计算出x,y的值 */ public class Text3 { public static void main(String[] args) { int a = 10; int b = 10; int c = 10; a = b++; //a=10,b=11,c=10 c = --a; //a=9,b=11,c=9 b = ++a; //a=10,b=10,c=9 a = c--; //a=9,b=10,c=8 System.out.println("a:"+a); //9 System.out.println("b:"+b); //10 System.out.println("c:"+c); //8 System.out.println("--------------"); int x = 4; int y = (x++)+(++x)+(x*10); //4+6+60 //x=5,6 System.out.println("x:"+x); //6 System.out.println("y:"+y); //70 } }
/* 面试题(可能性大): short s=1;s = s+1; short s=1;s+=1; 上面两个代码有没有问题,如果有,那里有问题。 为什么第二个木有问题呢? 扩展的赋值运算符其实隐含了一个强制类型转换。 s += 1; 不是等价于 s = s + 1; 而是等价于 s = (s的数据类型)(s + 1); */ public class Text4 { public static void main(String[] args) { //short s = 1; //s = s + 1; //System.out.println(s); //损失精度, short s = 1; s += 1; //好像是 s = s + 1; System.out.println(s); //2 } }
/* 位运算符: &,|,^,~ <<,>>,>>> 注意: 要做位运算,首先要把数据转换为二进制。 */ public class Text4 { public static void main(String[] args) { //&,|,^,~ int a = 3; int b = 4; System.out.println(3 & 4); //0 System.out.println(3 | 4); //7 System.out.println(3 ^ 4); //7 System.out.println(~3); //-4 } } /* 分析:因为是位运算,所以我们必须先把数据换算成二进制。 3的二进制:11 00000000 00000000 00000000 00000011 4的二进制:100 00000000 00000000 00000000 00000100 &位与运算:有0则0。 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000000 结果是:0 |位或运算:有1则1。 00000000 00000000 00000000 00000011 |00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000111 结果是:7 ^位异或运算:相同则0,不同则1。 00000000 00000000 00000000 00000011 &00000000 00000000 00000000 00000100 ----------------------------------- 00000000 00000000 00000000 00000111 结果是:7 ~按位取反运算符:0变1,1变0 00000000 00000000 00000000 00000011 ~11111111 11111111 11111111 11111100 (补码) 补码:11111111 11111111 11111111 11111100 反码:11111111 11111111 11111111 11111011 原码:10000000 00000000 00000000 00000100 结果是:-4 */
/* 面试题: 请自己实现两个整数变量的交换 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。 */ public class Text4 { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的) /* int c = a; a = b; b = c; System.out.println("a:"+a+",b:"+b); System.out.println("------------"); */ //方式2:用位异或实现(面试用) //左边:a,b,a //右边:a ^ b /* a = a ^ b; b = a ^ b; //a ^ b ^ b = a a = a ^ b; //a ^ b ^ a = b System.out.println("a:"+a+",b:"+b); */ //方式3:用变量相加的做法 /* a = a + b; //a=30 b = a - b; //b=10 a = a - b; //a=20 System.out.println("a:"+a+",b:"+b); */ //方式4:一句话搞定 b = (a+b) - (a=b); //b=30-20=10,a=20 System.out.println("a:"+a+",b:"+b); } }
标签:计算 过程 print 实现 反码 强制类型转换 注意 练习题 static
原文地址:http://www.cnblogs.com/sutao/p/7173111.html