1. float a = 3.5; int b = a; 打印b的结果是什么?
错误的,不兼容的类型,强制转换会造成损失。
2. int a = 5; float b = a; 打印b的结果是什么?
结果是5.0,float是浮点数,默认是double类型。
3. char a = 'A'; int b = a; 打印b的结果是什么?
结果是65,A的编码数值为65。
4. int a = 68; char b = a; 打印b的结果是什么?
错误的,b是char型的,给char b = a;里的a加上单引号就可以变成char型的。
5. 画出基本数据类型的兼容关系图
6. 变量的命名规则:
驼峰命名法:
小驼峰:变量一般用小驼峰法标识。第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母。
大驼峰:常用于类名,函数名,属性,命名空间。相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。
连字符命名法 :将连字符(短划线-)放在复合词的两个部分之间,或者将连字符放在后缀前面或者前缀后面。
7. 分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符
算术运算符 | + - * / % | 当表达式中的数值都是整数int, 则运算结果也是整数int 当表达式中有一个数值是浮点数double, 则整个表达式所有数值全部提升为浮点数double, 运算结果为浮点数double |
赋值运算符 | = += -= *= /= %= | 将一个直接量赋值给变量,也可以将一个变量赋值给另一个变量 |
比较运算符 | > >= < <= == != | 所有的比较运算符, 运算结果都是boolean类型, 要么是true, 要么是false |
逻辑运算符 | & && | || ! | 逻辑运算符是对两个boolean条件做逻辑(与、或、非)运算, 运算结果也是boolean |
位运算符 | 左移 << 右移 >> >>> | 位 => 二进制比特位 什么是位运算符? 因为运算符会将数字转为二进制, 对二进制的比特位做运算 |
单目运算符 | ~5按位非 i++ 自增、i--自减 !a 逻辑取反 | 表达式中只有一个操作数 |
三目运算符 | ?: | 运算符对三个操作数进行运算 |
8. =和==的区别:
一个等于号 = 是赋值运算符 (可以是直接量赋给变量, 也可以是变量赋给变量)
两个等于号 == 才是是否相等的比较运算符
9. i++和++i的区别:
如果表达式中只有++运算,则在变量前面或后面没有区别,如果表达式中除了++,还有其他运算,++i中在变量前面,先运行++,再运行其他运算;则i++中在变量后面,先运行其他运算,再运行++。
10. +运算符操作数值, 字符, 字符串的区别是什么:
+运算符操作数值,直接相加,
+运算符操作字符,把字符的编码数值加在一起,
+运算符操作字符串,进行字符串的拼接
例如:
11. &和&&的区别:
&不短路与: 左边不成立, 右边就失去了运算的意义, 但是也会运算一下
&&短路与: 左边不成立, 右边就不会运算了, 因为与要求两边都成立, 如果左边已经为不成立, 右边就没有运算的意义了, 因为无论右边是否成立, 也不会影响最终结果
12. |和||的区别:
| 不短路或: 左边成立, 右边就失去了运算的意义, 但是也会运算一下
|| 短路或: 左边成立, 右边就不会运算了, 因为或要求两边都不成立, 如果左边已经成立了, 右边就失去了运算的意义了, 因为无论右边是否成立. 也不会影响最终结果
13. &可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么:
逻辑运算符:两个条件都成立,结果才成立,有一个条件不成立,结果就是不成立
位运算符:按位与,两个数字同一位上的数字都为1返回为1 ,其他为0。(注意要先将数字转换为二进制)
14. |可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么:
逻辑运算符:两个条件都不成立,结果才不成立,有一个条件成立,结果就是成立
位运算符:按位或,两个数字同一位上的数字只要有一位为1,结果返回就为1
15. 什么是原码、反码、补码:
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。
反码:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。
16. 图解3&5的运算过程和结果
17. 图解3|5的运算过程和结果
18. 图解~5的运算过程和结果
19. 图解3^5的运算过程和结果:
3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 结果 |
按位与 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
按位或 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 7 |
按位异或 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 6 |
5取按位非 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | -6 |
&按位与(双目运算符),当两个数字都为1返回1,有一位不为1返回0 |按位或(双目运算符),只要有一位是1则返回1 ^按位异或(双目运算符),两位数字相同时返回0,不同返回1 ~按位非(单目运算符),只能操作一个数字,表示每一个比特位取反,包括符号位
20. 图解8<<2的运算过程和结果:
<----------------------
高位舍弃---低位以0填充
00001000
00100000
21. 图解8>>2的运算过程和结果:
------------------------->
高位以0填充-----低位舍弃
00001000
00000010
22. 图解~5和~-5的运算过程和结果
22. >>和>>>的区别是什么:
如何最快速计算 8 * 4?
如何最快速计算 8 / 4?
>>:有符号右移,无论正数或负数,高位都是补0
>>>:无符号右移,正数高位补0,负数高位补1
使用左移运算符可以最快速计算 8 * 4,使用右移运算符可以快速计算 8 / 4。
23. 说说运算符的优先级, 以及如何改变优先级:
使用()可以改变运算符的优先级
24. 什么是单目(一元), 双目(二元), 三目(三元)运算符:
单目: 运算符只对一个操作数进行运算
~5 按位非
i++ 自增
!a 逻辑取反
双目: 运算符对两个操作数进行运算
3 + 4
5-2
6*7
8/2
10%3
a > b...........
三目: 运算符对三个操作数进行运算
?:
25. 说说第二行代码中有几个运算符和运算顺序
int a = 10
char b = a++ > 10 ? 'A': 'B'
打印a
打印b
有4个运算符,分别是:=、>、?、:
先运算>,然后是?之后是++,最后是=