1.转义字符:通过\转变后面字母或者符号的含义
\n:换行。
\b:退格。相当于backspace。
\r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
\t:制表符。相当于tab键。
\\:转义\; \":转义"
2.面试题:short s=4;s=s+5和s+=5;有什么区别:
第一个进行了两次运算,首先是加法然后是赋值,第二个是一次运算(+=是一个运算符),将s+5的和赋值给左边。两者的区别在于,第一个不会进行自动类型转换,因此会报精度丢失的错误,第二个虚拟机会计算s+5的值,只要在s(short)的范围中,便会进行自动类型转换赋值给s,跟short s=4一样,只要4在s的范围中便会赋值成功。
3. 逻辑运算符
^ : 异或;就是和|有点不一样。当true ^ true = false;
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^ : 两边相同结果是false。
两边不同结果是true
4.位运算符
<<:其实就是乘以2的移动的位数次幂;>>:就是除以2的移动的位数次幂;
>>:最高位补什么由原有数据的最高位的数字决定;-6>>2=-2;
>>>:无论最高位是什么,右移后,都用0补;
~:反码运算符,其实就是对二进制取反,~6=-7 0110取反后1111....1111-1001,这个数就是-7
^:异或(应用:加密解密):一个数异或相同的数两次,结果还是这个数 7^5^5=7
5.不使用第三方变量交换m,n的值;
(1)
n = n + m; //如果n和m的值非常大,容易超出int范围。
m = n - m;
n = n - m;
(2)
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
6.计算二进制到十六进制的转化数字的时候,首先&15(取最低四位),如果大于10,计算char(差值+'A'),然后右移4位>>>4, 此处用>>>,避免最高位一直补有效位1!
7.(P27)三元运算符: 好处:可以简化if else代码。 弊端:因为是一个运算符,所以运算完必须要有一个结果。
8.(P29)switch 语句的四个特点
- switch语句选择的类型只有5种: byte, short, int , char,string。
- case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
- 结束switch语句的两种情况:遇到break,执行到switch语句结束。
- 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束
int x = 3;
switch(x)
{
default:
System.out.println("d");
//break;
case 4:
System.out.println("a");
//break;
case 6:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;
}
上面的结果是dab,x=3,从case 4开始匹配,最后执行default,因为没有break语句也没有执行到结尾大括号处,所以继续向下执行且不再判断case 条件,以此执行a b,遇到break语句后结束循环。
9. if和switch语句很像。具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符合byte short int char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。
10.函数的重载与返回值类型无关,只与参数个数和参数类型有关。