基础知识点题目:
1. &和&&的区别?
2. 最有效率的方法计算 2 × 8 2\times8 2×8.
3. 在没有使用临时变量的情况如何交换两个整数变量的值?
4. short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1; 有错吗?
5.float f = 3.4;是否正确?
知识点归纳:
1. 解答:
& 表示两个布尔值同时为真才为真,进行判断时 & 的两边都要进行判断;&& 为短路与逻辑运算符,当 && 的左边的布尔值为假时,不用再判断 && 右边的布尔值真假,便可得出结论该运算的布尔值为 false。
实例如下:
电路问题总结:
- 对于:& --》不管怎样,都会执行“&”符号左右两边的程序;
- 对于:&& --》只有当符号“&&”左边程序为真(true)后,才会执行符号“&&”右边的程序。
运算规则:
- 对于:& --》只要左右两边有一个为 false,则为 false;只有全部都为 true的时候,结果才为 true;
- 对于:&& --》只要符号左边为 false,则结果为 false;当左边为 true,同时右边也为 true,则结果为 true。
2. 解答:
2 << 3;因为将一个数左移 n 位,就相当与乘以 2 的 n 次方。所以 2 × 8 2\times8 2×8 = = = 2 × 2 2 2\times2^{2} 2×22 = = = 2 3 2^{3} 23 = = = 16 16 16.
示例如下:
3. 解答:
可以利用两个数的相加减进行变量的交换。
如下图:
4. 解答:
- 错误,s1 = s1 + 1等号右边式子,s1是short类型,1 是整型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向short s1 = 1 左侧的s1看齐,即需要通过强制类型转换,正确写法为:s1 = (short)(s1+1);
- 正确,执行 s1 += 1,其实执行的是 s1 = (short)(s1+1),其中会有一个强制转换的过程。
5、 解答:
不正确;3.4 后面要加上 f,正确形式为 float f = 3.4f;不加上 f 就会默认为 double 型。
示例如下:
解决方案 1:
解决方案 2: