2020.10.12(7~10)
7. i++和++i的异同
- 共同点:
- i++和++i都是变量自增1,等价于i=i+1
- 如果i++,++i是一条单独的语句,两者没有任何关系
- i++和++i的使用仅仅针对变量。5++和++5会报错,因为5不是变量
- 不同点:
- 如果i++和++i不是一条单独语句,则它们有区别
- i++:先运算后增1.如:
````intx=5;int` `y=x++;System.out.println("x="+x+", y="+y);//以上代码运行后输出结果为:x=6, y=5` - ++i:先增1后运算。如:
````intx=5;int` `y=++x;System.out.println("x="+x+", y="+y);//以上代码运行后输出结果为:x=6, y=6`
- i++:先运算后增1.如:
8. &和&&,|和||的区别和联系
- &和&&的联系:
- &和&&都可以用作逻辑与运算符,但需要视情况而定。
操作数1&操作数2,操作数1&&操作数2,
表达式1&表达式2,表达式1&&表达式2,
情况1:当上述的操作数是boolean类型变量时,&和&&都可以用作逻辑与运算符
情况2:当上述的表达式结果是boolean类型变量时,&和&&都可以用作逻辑与运算符。表示逻辑与(and),当运算符两边的表达式的结果或操作数都为true时,整个运算结果才为true,否则,只要有一方为false,结果都为false
- &和&&都可以用作逻辑与运算符,但需要视情况而定。
- &和&&的区别:
- & 称为逻辑与运算符,&& 称为短路与运算符,也可叫逻辑与运算符
- 对于&:无论任何情况,&两边的操作数或表达式都会参与计算
- 对于&&:当&&左边的操作数为false或左边表达式结果为false时,&&右边的操作数或表达式将不参与计算,此时最终结果都为false
-综上所述,如果逻辑与运算的第一个操作数是false或第一个表达式的结果为false时,对于第二个操作数或表达式是否进行运算,对最终的结果没有影响,结果肯定是false。推介平时多使用&&,因为它效率更高些
- &还可以用作位运算符。当&两边操作数或两边表达式的结果不是boolean类型时,&用于按位与运算符的操作。
- |和||的区别和联系与&和&&的区别和联系类似
9. 用最有效率的方法算出2*8
- 使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单位进行操作与运算,操作数和结果都是整形数。
- << 左移 (相当于*2)
- >> 右移 (相当于/2)
- 所以,2*8最有效的方法是 2<<3
10 基本数据类型的类型转换规则
基本类型转换分为自动转换和强制转换
-
自然转换规则:
- 容量小的数据类型 可以自动转换成容量大的数据类型,也可以说低级自动向高级转换。这儿的容量指的不是字节数,而是指类型表述的范围
![]()
- 容量小的数据类型 可以自动转换成容量大的数据类型,也可以说低级自动向高级转换。这儿的容量指的不是字节数,而是指类型表述的范围
-
强制转换规则:
- 高级变为低级需要强制转换
-
如何转换:
- 赋值运算符“=”右边的转换,先自动转换成表达式中级别最高的数据类型,再进行运算。
- 赋值运算符“=”两侧的转换,若左边级别>右边级别,会自动转换;若左边级别== 右边级别,不用转换;若左边级别< 右边级别,需强制转换。
- 可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,前提是不超出其表述范围,否则必须进行强制转换

浙公网安备 33010602011771号