1. float a = 3.5; int b = a; 打印b的结果是什么
public class text {
public static void main(String[] args) {
float a = 3.5;
int b = a;
System.out.println(b);
}
}
打印b时会出现错误,因为不能兼容,数据从float转换到int可能会有损失。
2. int a = 5; float b = a; 打印b的结果是什么
public class text {
public static void main(String[] args) {
int a = 5;
float b = a;
System.out.println(b);
}
}
打印会输出5.0,因为从数据可以从int转换到float,在赋值时会变成float数据类型。
3. char a = 'A'; int b = a; 打印b的结果是什么
public class text {
public static void main(String[] args) {
char a = 'A';
int b = a;
System.out.println(b);
}
}
打印会输出65,因为'A'表示是得到A的ASCII码,赋值时会把原来的char类型转换成int类型。
4. int a = 68; char b = a; 打印b的结果是什么
public class text {
public static void main(String[] args) {
int a = 68;
char b = a;
System.out.println(b);
}
}
打印会出现错误,因为不能兼容,数据从int转换到char可能会有损失。
5. 画出基本数据类型的兼容关系图
6. 变量的命名规则
(1).必须以字母、下划线、或者美元符开头;
①以美元符 开头命名的变量虽然能够编译通过但是不建议使用;
②中文也可以作为命名开头且编译也能通过,但是不建议使用。
(2).除开头外后面的部分可以有字母、下划线、美元符$以及数字组成;
(3).虽然变量名不限制长度,但能表达清楚命名的含义即可;
(4).变量名不可以和java的关键字冲突;
驼峰命名法
大驼峰式命名法(upper camel case): 每一个单字的首字母都采用大写字母,例如:MyName
小驼峰式命名法(lower camel case): 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName
标识符命名法
(1).所有变量、方法、类名:见名知意。
(2).类成员变量:首字母小写和驼峰原则:monthSalary。
(3).局部变量:首字母小写和驼峰原则
(4).常量:大写字母和下划线:MAX_VALUE。
(5).类名:首字母大写和驼峰原则:Man,GoodMan。
(6).方法名:首字母小写和驼峰原则:run(),runRun()。
标识符命名规则
(1).标识符:凡是自己可以起名的都叫标识符
(2).标识符由数字0-9和26个字母以及_和$组成
(3).标识符不能以数字开头
(4).JAVA语言严格区分大小写
(5).标识符不能包含空格
7. 分别用表格整理算术运算符, 赋值运算符,比较运算符,逻辑运算符,位运算符,单目运算符,三目运算符
算数运算符 | +代表 加法 |
-代表 减法 | |
*代表 乘法 | |
/代表 除法 | |
%代表 求、求模 | |
//代表 整除 | |
**代表 幂次方 |
赋值运算符 | = 代表将右侧的值赋给左侧。 例如a=10 |
+= 例如a += 1 ---->a = a + 1 | |
*= 例如a *=1 ---> a = a * 1 | |
/= 例如a =10 a/=5 a= 10/5 = 2 | |
**= 例如 a = 10 a^^=2 a= 10 ^2 = 100 | |
//= 这个结果只取整数,余数不取 | |
%/ 这个只取余数 |
比较运算符 | >代表 大于 |
<代表 小于 | |
>= 代表 大于等于 | |
<= 代表 小于等于 | |
!= 代表 不等于 | |
== 代表 等于判断。和=不一样,=是赋值。 |
运算符 | 运算 | 实例 | 结果 | 说明 |
& | AND(与) | true&false | false | 两边同true,则结果为true,否则为false。 |
&& | AND(短路与) | false&&true | false | 若第一个为false,则不往后进行,因为已经确定两边不能同true了。 |
| | OR(或) | true|false | true | 只要有一个为true,则结果为true。否则为false。 |
^ | XOR(异或) | true^false | true | 两边不同为true,相同为false。 |
|| | OR(短路或) | true||false | true | 左边true则直接得到结果true。不往右进行。 |
! | 非 | true | false | 操作数为true,返回false。 |
位运算符 | &:按位与。当两位同时为1时才返回1. |
|:按位或。只要有一位为1即可返回1. | |
~:按位非。单目运算符,将操作数的每个位(包括符号位)全部取反 | |
^:按位异或。当两位相同时返回0,不同时返回1。 | |
<<:左移运算符。 | |
>>:右移运算符。 | |
>>>:无符号右移运算符 |
8. =和==的区别
(1)、二者的含义不同
=是赋值号;==是条件判断语句中是否相等的意思。
(2)、二者的作用不同
①、==
作用是将一个表达式的值赋给一个左值。一个表达式或者是一个左值,或者是一个右值。所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。
②、==
当左边的内容与右边的内容相同时,返回1。其余时候返回0。==是判断两个值大小是否相同的运算符。
9. i++和++i的区别
(1)、 i++ 返回原来的值,++i 返回加1后的值。
(2)、 i++ 不能作为左值,而++i 可以。
10. +运算符操作数值, 字符, 字符串的区别是什么
+操作数值是相加
+操作字符是字符对应编码相加
+操作字符串是把字符串拼接
11. &和&&的区别
& | AND(与) | true&false | false | 两边同true,则结果为true,否则为false。 |
&& | AND(短路与) | false&&true | false | 若第一个为false,则不往后进行,因为已经确定两边不能同true了。 |
12. |和||的区别
| | OR(或) | true|false | true | 只要有一个为true,则结果为true。否则为false。 |
|| | OR(短路或) | true||false | true | 左边true则直接得到结果true。不往右进行。 |
13. &可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
逻辑运算符:不短路与(&),前后都为true才返回true;前面false,后面也可以执行,
前后可以是表达式。
位运算符:与(&),2位同时为1才返回1,只能用于前后是整形数据。
14. |可以作为逻辑运算符使用, 也可以作为位运算符使用, 区别是什么
逻辑运算符:不短路或(|),前后任一为true就返回true;前面true,后面也可以执行
前后可以是表达式。
位运算符:或(|),一位为1就返回1,只能用于前后是整形数据。
15. 什么是原码、反码、补码
原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
正数原码反码补码是一样的,以5为例
原码:00000101
反码:00000101
补码:00000101 按位取反~5 = 11111010 补码
11111001 反码
10000110 原码
以-5为例
原码:10000101
反码:11111010 反码=原码取反(除符号位)
补码:11111011 补码=反码+1 按位非运算 ~5 = 00000100 补码反码原码
16. 图解3&5的运算过程和结果
二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
二进制1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
3&5是与运算,与运算是当二者同为1是才返回1。
17. 图解3|5的运算过程和结果
二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
二进制7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
3|5是或运算,或运算是当二者只要有一个为1就返回1。
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 |
取反后补码~ | 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 |
19. 图解3^5的运算过程和结果
二进制3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
二进制5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
二进制6 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
3^5是异或运算,异或运算是当二者相同时返回0,二者不同返回1。
20. 图解8<<2的运算过程和结果
8<<2 8*4
<---------------------
高位舍弃 -- 低位以0填充
向左移两位
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
21. 图解8>>2的运算过程和结果
8>>2 8/4 正数高位补0,负数高位补1
------------------>
高位以0填充 -- 低位舍弃
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 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 |
取反后补码~ | 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 |
取反后补码~ | 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 |
22. >>和>>>的区别是什么
>>有符号右移,正数高位补0,负数高位补1
>>>无符号右移,无论正数还是负数,高位都补0
(1)、如何最快速计算 8 * 4
通过左移计算
(2)、如何最快速计算 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
第二行有四个运算符,最先是>,然后是++,接着是?:,最后是=。