1.计算机数据的存储使用二进制补码形式存储,并且最高位是符号位
正数的补码与反码、原码一样,称为三码合一
负数的原码:把十进制转为二进制,然后最高位设置为 1
负数的反码:在原码的基础上,最高位不变,其余位取反(0变 1,1变0)
负数的补码:反码+1
各进制间的转换
十进制转成二进制:除2取余
二进制转8进制,三位三位的看
二进制转16进制,四位四位的看
2.运算符自增自减
- 变量在单独运算的时候,变量前++和变量后++,a的值是没有区别的。 • 变量前++ :例如 ++a 。 变量后++ :例如 a++ 。
- 和其他变量放在一起使用或者和输出语句放在一起使用,前++和后++就产生了不同。变量前++ :变量先自增 1,然后再运算。 • 变量后++ :变量先运算,然后再自增 1。
3. 逻辑运算符
- & 和 &&:表示"且"关系,当符号左右两边布尔值都是 true时,结果才能为 true。否则,为 false。
- | 和 || :表示"或"关系,当符号两边布尔值有一边为 true时,结果为true。当两边都为 false时,结果为 false
- ! :表示"非"关系,当变量布尔值为 true时,结果为 false。当变量布尔值为 false时,结果为 true。
- ^ :当符号左右两边布尔值不同时,结果为 true。当两边布尔值相同时,结果为 false。
区分 & 和 &&
– 相同点:如果符号左边是 true,则二者都执行符号右边的操作
– 不同点:& : 如果符号左边是 false,则继续执行符号右边的操作 && :如果符号左边是 false,则不再继续执行符号右边的操作
– 建议:开发中,推荐使用 &&
区分 | 和 ||
— 相同点:如果符号左边是 false,则二者都执行符号右边的操作
— 不同点:| : 如果符号左边是 true,则继续执行符号右边的操作 || :如果符号左边是 true,则不再继续执行符号右边的操作
建议:开发中,推荐使用 ||
企业真题:
1.高效计算2*8的值?
答:使用<<
2.&和&&的区别?
答:相同点:当符号左边都是false时,&和&&都会计算右边
不同点:当左边是false时,&会计算右边,&&不会计算右边
3.Java的基本数据类型有哪些?String是最基本的数据类型吗?
答:byte, short, char, int, long, float, double. boolean.八种数据类型。String不是最基本的数据类型,是引用类型。
4.Java开发中计算金额时使用什么数据类型?
答:不能使用float和double,因为精度不高。
使用BigDecimal类替换,可以实现任意精度的数据的运算。
5.char型变量中能不能存储一个中文汉字,为什么?
答:可以,因为char使用的是unicode字符集,包含了世界范围内的文字。
6.分析代码
答:因为编译器自动将+=运算符后面的操作数强制转换为前面变量的类型,所以s+=2不会报错.
7. int i=0; i=i++ 执行后i 等于0
8. 如何将两个变量的值互换。
String s1="abc";
String s2="123";
String temp=s1;
s1=s2;
s2=temp;
9. boolean占几个字节?
10. 为什么Java中0.1+0.2结果不是0.3?
答:整数变为二进制,能够做到“每个十进制都有对应的二进制数”,对于小数, 并不能做到“每个小数都有对应的二进制数”。所以在编程中,遇见小数判断相等情况,可以采用“四舍五入”或者“同乘同除”等方式,或者采用BigDecimal类,它底层逻辑是转换成字符串类型。