1. float a = 3.5; int b = a; 打印b的结果是什么?
题目错误,float默认是double类型,同时float 和int是不兼容的类型,
如果希望Java把浮点型当成float,应该在后面加f或F,
即float a = 3.5F,int 类型到float需要强制转换,即int b = (int)a;会精度丢失,打印b是3
2. int a = 5; float b = a; 打印b的结果是什么
b打印的结果为5.0
3. char a = 'A'; int b = a; 打印b的结果是什么
打印结果为65
本题中a为字符型字符,b为整型字符,将二者转换,就是将字符转换成字符编码
4. int a = 68; char b = a; 打印b的结果是什么?
两者不兼容,无法打印,下图为修改以后打印出来的b
5、 画出基本数据类型的兼容关系图
6. 变量的命名规则
驼峰命名法:
小驼峰:除第一个单词之外,其他单词首字母大写。譬如int myStudentCount;变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。常用于函数名。
大驼峰法相比小驼峰法,大驼峰法(即帕斯卡命名法)把第一个单词的首字母也大写了。常用于类名,属性,命名空间等。譬如 DataBaseUser;
连字符命名法:利用-将两个个或多个单词连接起来 如 new-life news-left
7. 分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符
种类 | 符号 | 说明 |
算术运算符 | +、- 、 *、/ 、% | 当表达式中的数值都是整数int, 则运算结果也是整数int 当表达式中有一个数值是浮点数double, 则整个表达式所有数值全部提升为浮点数double, 运算结果为浮点数double |
赋值运算符 | = 、 += 、 -=、 *= 、 /= %= | |
逻辑运算符 | & && | || ! | 逻辑运算符是对两个boolean条件做逻辑(与、或、非)运算, 运算结果也是boolean 与(并且关系and, 两个条件都成立, 结果才成立, 有一个条件不成立, 结果就是不成立) 左右两边都为true, 运算结果为true, 有一边是false, 运算结果就是false 或(或者关系or, 两个条件都不成立, 结果才不成立, 有一个条件成立, 结果就是成立) 左右两边都为false, 运算结果为false, 有一边是true, 运算结果就是true 非(成立变为不成立, 不成立变为成立) 取反, true取反后得到false, false取反后得到true 与和或有短路和不短路的区别 短路与: 左边不成立, 右边就不会运算了, 因为与要求两边都成立, 如果左边已经为不成立, 右边就没有运算的意义了, 因为无论右边是否成立, 也不会影响最终结果 不短路与: 左边不成立, 右边就失去了运算的意义, 但是也会运算一下 短路或: 左边成立, 右边就不会运算了, 因为或要求两边都不成立, 如果左边已经成立了, 右边就失去了运算的意义了, 因为无论右边是否成立. 也不会影响最终结果 不短路或: 左边成立, 右边就失去了运算的意义, 但是也会运算一下 |
位运算符 | & 、| 、~、 ^ 、<< 、>> 、>>> | |
单目运算符 | ++、-- | 如果表达式中只有 ++或--运算, 则在变量前面或后面没有区别 如果表达式中除了 ++或--, 还有其他运算 则在变量前面, 先运行++或--, 再运行其他运算 在变量后面, 先运行其他运算, 再运行 ++ 或 -- |
比较运算符 | > >= < <= == != | 所有的比较运算符, 运算结果都是boolean类型, 要么是true, 要么是false 注意: 一个等于号 = 是赋值运算符 (可以是直接量赋给变量, 也可以是变量赋给变量) 两个等于号 == 才是是否相等的比较运算符 |
三目运算符 | ?: | 操作数1必须是boolean类型,或者是一个表达式,运算结果是boolean类型 操作数2和3必须是一样的类型 操作数1为true,则操作数2是整个表达式的运算结果 操作数1为false,则操作数3是整个表达式的运算结果 注意:如果想要存储三目运算符的结果,应该用什么类型的变量 |
8. =和==的区别
一个等于号 = 是赋值运算符 (可以是直接量赋给变量, 也可以是变量赋给变量)
两个等于号 == 是是否相等的比较运算符
9. i++和++i的区别
如果表达式中只有 ++运算, 则在变量前面或后面没有区别
如果表达式中除了 ++还有其他运算则在变量前面, 先运行++再运行其他
运算在变量后面, 先运行其他运算, 再运行 ++
10. +运算符操作数值, 字符, 字符串的区别是什么
操作数值:直接将数值相加,然后输出
操作字符:将字符转换为int类型的字符编码,然后相加再输出
操作字符串:直接将字符串连接在一起
11 &&和&的区别
&&短路与:左边不成立,右边就不会运算了,因为与要求两边都成立,如果左边为不成立,右边就没有运算的意义了,因为无论右边是否成立,也不会影响最终结果
&不短路与:不短路与,左边不成立,右边就失去了运算的意义,但是也会运算一下
12 |和||的区别
短路或: 左边成立, 右边就不会运算了, 因为或要求两边都不成立, 如果左边已经成立了, 右边就失去了运算的意义了, 因为无论右边是否成立. 也不会影响最终结果
不短路或: 左边成立, 右边就失去了运算的意义, 但是也会运算一下
13&可以作为逻辑运算符使用,也可以作为位运算符使用,区别是什么
逻辑运算符:两个条件都成立,结果才成立,有一个条件不成立,结果就是不成立
位运算符:按位与,两个数字同一位上的数字都为1返回为1 ,其他为0。(注意要先将数字转换为二进制)
14|可以作为逻辑运算符使用,也可以作为位运算符使用,区别是什么
逻辑运算符:两个条件都不成立,结果才不成立,有一个条件成立,结果就是成立
位运算符:按位或,两个数字同一位上的数字只要有一位为1,结果返回就为1
15什么是原码、反码、补码?
原码:将一个整数转换为二进制
反码:正数的反码就是其原码,负数的反码是将原码中除了符号位以外,每一位取反
补码:正数的补码就是其原码,负数的补码是其反码+1
16. 图解3&5的运算过程和结果
按位与,两个数字同一位上的数字都为1返回为一 ,其他0为,注意要先转换为二进制,
数字 | 二进制 |
3 | 0 0 0 0 0 0 1 1 |
5 | 0 0 0 0 0 1 0 1 |
3&5 | 0 0 0 0 0 0 0 1 |
最终结果为1 |
17. 图解3|5的运算过程和结果
按位或,只要有一位为1,结果返回就为1
数字 | 二进制 |
3 | 0 0 0 0 0 0 1 1 |
5 | 0 0 0 0 0 1 0 1 |
3|5 | 0 0 0 0 0 1 1 1 |
最终结果为7 |
18. 图解~5的运算过程和结果
数字 | 5 |
原码 | 0 0 0 0 0 1 0 1 |
反码 | 0 0 0 0 0 1 0 1 |
补码 | 0 0 0 0 0 1 0 1 |
按位取反~5(对5的补码取反) | 1 1 1 1 1 0 1 0 |
~5补码(对5的反码取反,包括符号位) | 1 1 1 1 1 0 1 0 |
~5反码(~5的补码-1) | 1 1 1 1 1 0 0 1 |
~-5原码(~5的反码取反) | 1 0 0 0 0 1 1 0 |
最终结果为-6 |
19. 图解3^5的运算过程和结果
按位异或,两位相同时返回0,不同时返回1
数字 | 二进制 |
3 | 0 0 0 0 0 0 1 1 |
5 | 0 0 0 0 0 1 0 1 |
3^5 | 0 0 0 0 0 1 1 0 |
最终结果为6 |
20、图解8<<2的运算过程和结果
8<<2相当于8*4 高位舍弃,低位用0填充
00001000
<---------------
00100000
21. 图解8>>2的运算过程和结果
8>>2相当于8/4有符号右移,正数最高位用0填充,负数最高位补1
00001000
------------->
00000010
22. 图解~5和~-5的运算过程和结果
数字 | 5 |
原码 | 0 0 0 0 0 1 0 1 |
反码 | 0 0 0 0 0 1 0 1 |
补码 | 0 0 0 0 0 1 0 1 |
按位取反~5(对5的补码取反) | 1 1 1 1 1 0 1 0 |
~5补码(对5的反码取反,包括符号位) | 1 1 1 1 1 0 1 0 |
~5反码(~5的补码-1) | 1 1 1 1 1 0 0 1 |
~-5原码(~5的反码取反) | 1 0 0 0 0 1 1 0 |
最终结果为-6 |
数字 | -5 |
原码 | 1 0 0 0 0 0 1 0 1 |
反码 | 1 1 1 1 1 1 0 1 0 |
补码 | 1 1 1 1 1 0 1 1 |
按位取反~-5(对5的补码取反) | 0 0 0 0 0 1 0 0 |
~-5的补码 | 0 0 0 0 0 1 0 0 |
~5的反码 | 0 0 0 0 0 1 0 0 |
~-5的原码 | 0 0 0 0 0 1 0 0 |
最终结果为4 |
22. >>和>>>的区别是什么
如何最快速计算 8 * 4
如何最快速计算 8 / 4
区别:>>是有符号右移,正数最高位用0填充,负数最高位补1
>>>无符号右移,无论正负,高位都是补0
8*4:1<<5(相当于0001向左移4个单位变成00100000)
8/4:1<<1(相当于0001向左移1个单位变成00000010)
23. 说说运算符的优先级, 以及如何改变优先级
加()改变优先级
24. 什么是单目(一元), 双目(二元), 三目(三元)运算符
单目: 运算符只对一个操作数进行运算
~5 按位非
i++ 自增
!a 逻辑取反
双目: 运算符对两个操作数进行运算
3 + 4
5-2
6*7
8/2
10%3
a > b...........
三目: 运算符对三个操作数进行运算
?:
操作数1?操作数二:操作数3
25. 说说第二行代码中有几个运算符和运算顺序
int a = 10
char b = a++ > 10 ? 'A': 'B'
四个运算符,顺序1>,2++,3?:4=
打印a 11
打印b B