1. float a = 3.5F; int b = a; 打印b的结果是什么
b=3 (Java默认浮点类型的double型,想要使用float型浮点数,需在整数后加f或F)
2. int a = 5; float b = a; 打印b的结果是什么
5.0
3. char a = 'A'; int b = a; 打印b的结果是什么
65(a是字符型,在给b赋值时转换成ACII码,A对应为65)
4. int a = 68; char b = a; 打印b的结果是什么
D(int类型的a转换成char类型的b需要强制转换)
5. 画出基本数据类型的兼容关系图
自动类型转换:byte->short(char)->int->long->float->double
强制类型转换:double->float->long->int->short(char)->byte
6. 变量的命名规则
驼峰命名法
大驼峰
大驼峰命名法特点是第一个字母大写,后面每个单词第一个字母也大写。常用于类名、函数名、属性、命名空间。
小驼峰
小驼峰命名法特点是第一个单词首字母小写,后面其他单词首字母大写。
类名的标识符一般用大驼峰书写,方法和变量的标识符一般用小驼峰书写。
连字符命名法
由于驼峰式的书写不方便,引入了大小写的复杂度,可读性无优势,因此引入了连字符命名法
用-连接:solution-title
用下划线连接:solution_title
7. 分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符
算数运算符 | + | - | * | / | % | ++ | -- |
含义 | 加法 | 减法 | 乘法 | 除法 | 求余 | 自加 | 自减 |
用法 | a+b | a-b | a*b | a/b | a%b | a++、++a | a--、--a |
赋值运算符 | = | ||||||
含义 | 赋值 | ||||||
用法 | a=b | ||||||
比较运算符(所有的运算结果都是布尔型) | > | < | >= | <= | == | ||
含义 | 大于 | 小于 | 大于等于 | 小于等于 | 等于 | ||
用法 | a>b | a<b | a>=b | a<=b | a==b | ||
逻辑运算符 | && | & | || | | | ! | ^ | |
含义 | 短路与 | 不短路与 | 短路或 | 不短路或 | 非 | 异或 | |
用法 | 当第一个操作数为false,后面的操作数不运行 | 当第一个操作数为false时,后面的操作数也运行 | 当第一个操作数为true时,后面不运行 | 当第一个操作数为false后,继续运行后一个操作数 | 给当前值所得的判断(true或者false) 取反 | 当两个操作数不同时才返回true,相同时返回false | |
位运算符 | & | | | ~ | ^ | << | >> | >>> |
含义 | 按位与 | 按位或 | 按位非 | 按位异或 | 左移运算符 | 右移运算符 | 无符号右移运算符 |
用法 | 1&1=1、1&0=0、0&0=0 | 1|1=1、1|0=1、0|0=0 | ~5=-6、~-5=4 | 1^1=0、1^0=1、0^0=0 | 8<<2=32 | 8>>2=2 | 8>>>2、-8>>>2=1073741822 |
单目运算符 | |||||||
含义 | 只有一个操作数的运算符 | ||||||
三目运算符 | a?b:c | ||||||
含义、 用法 | 通过a操作数的判断,a为true,选择操作数b;a为false,选择操作数c | ||||||
8. =和==的区别
=是赋值,比如a=b,是将b的值赋给a;==是进行比较运算,所得结果是true或者false两个中的一个。
9. i++和++i的区别
i++是先执行别的运算符的运算,在后面才执行自加运算;
++i是先执行自加运算,再执行其他运算。
10. +运算符操作数值, 字符, 字符串的区别是什么
例如:c=a+b;
数值时,是直接进行加法运算
c='a'+'b';
字符时是用字符a和b对应的ACII码进行运算
c="a"+"b"
这里是字符串a和b连接,得出ab
11. &和&&的区别
&:代表不短路与,当两个操作数中,第一个操作数为false时,第一个操作数还运行;
&&:代表短路与,当两个操作数中,第一个操作数为false时,后面的操作数不运行。
12. |和||的区别
|:代表不短路或,当两个操作数中,第一个操作数为true时,后面的操作数还运行;
||:代表短路或,当两个操作数中,第一个操作数为true时,后面的操作数不运行。
13. &可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
&作为逻辑运算符使用时,是不短路与,在第一个操作数为false时,后面的操作数还运行;
&作为位运算符使用时,是按位与,将两个操作数的二进制中相同位置的两个整数进行比较,同为1才返回1。
14. |可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
|作为逻辑运算符使用时,是不短路或,在第一个操作数为true时,后面的操作数还运行;
|作为位运算符使用时,是按位或,将两个操作符的二进制中相同位置的两个整数进行比较,只要一个为1就可返回1.
15、原码、反码、补码
原码由整数转换成二进制而来,
正数的原码、反码、补码:正数原码、反码、补码一样;
负数的原码、反码、补码:原码由符号位(负数符号位为1)+整数部分的二进制,反码为原码除符号位外全部取反得来,补码为反码+1得。
16. 图解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 |
3&5=1
3&5的过程用二进制观看和运算,&是与运算,,只有同为1才能返回1,并且3和5都是正数,补码就是原码。
17. 图解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 | 1 | 1 | 1 |
3|5=7
3|5的过程用二进制观看和运算,|是或运算,只要有一个1就返回1,并且3和5都是正数,补码就是原码。
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 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | |
原码 | -6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
~5=-6
~5是机器码即补码,在进行二进制转换后,需要将其转换为反码,再转换为原码,结果为-6
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 | 1 | 1 | 0 |
3^5=6
3^5的结果为6,^为异或,相同为0,不同为1,并且3和5都是正数,补码即原码。
20. 图解8<<2的运算过程和结果
8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
<< | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
8<<2=32
8<<2的结果为32,因为二进制需左移两位,并在低位补两个0
21. 图解8>>2的运算过程和结果
8 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
>> | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
8>>2=2
结果为2,因为二进制需要右移两个,最高位补两个0。
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 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
反码 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | |
原码 | -6 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
原码 | -5 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
反码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | |
补码 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | |
补码取反 | ~-5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
反码 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
原码 | 4 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
23、>>和>>>的区别
例:8>>2,8>>>2
8>>2相当于8/4(有符号右移,正数高位补0,负数高位补1)
8>>>2(无符号右移,无论正数或负数,高位都是补0)
如何最快速计算 8 * 4
8<<2
如何最快速计算 8 / 4
8>>2
24、说说运算符的优先级,以及如何改变优先级?
25、什么是单目(一元)、双目(二元)、三目(三元)运算符
单目:运算符只对一个操作数进行运算
~5 按位非
i++自增
!a逻辑取反
双目:运算符对两个操作数进行运算
三目:运算符对三个操作数进行运算
26. 说说第二行代码中有几个运算符和运算顺序
int a = 10
char b = a++ > 10 ? 'A': 'B'
四个运算符顺序:①>②?:③++④=
打印a
a=11
打印b
b=B