好吧,这是补昨天晚上的,每个星期五晚上就不太想做事。
1.逻辑运算符中对布尔值的操作和位运算符的区别?
对于布尔值,可对它执行按位“与”、按位“或”和按位“异或”,但不能执行按位“非”(与逻辑非不同),
按位操作具有与逻辑操作符相同的效果,只是他们不会中途“短路‘。短路即是,运算符左边算完
根据结果可以确定运算结果,不需要左右两边都计算。
2.按位运算符是怎样操作的?
按位左移>>: 相当于乘 2
有符号右移<<:相当于除 2, 符号与被除数相同。
无符号右移<<<:相当于除 2, 有符号数不能参与运算。
3.java中逻辑运算符左右两边只能接收boolean类型的语句,否则呢?
否则会出现找到什么类型,试图转换为boolean类型,会出现编译错误。任何类型不能直接与boolean转 换。
4.java中异或是怎样操作的?
逻辑异或:符号左右两边boolean值相同,则结果为false
符号两边boolean值不相同,则结果为true。
位异或:左右两边对应位相同,则为0
对应位不同,则为1
5.条件表达式所能接收的类型?
条件表达式只能接收boolean类型,当出现把其他类型当做boolean使用时,编译会出现错误,即条件
表达式只能用比较运算符(< ,>, == )连接。
6.最有效的方式计算7乘8?
就是通过左移, 7<<3
7.怎么对两个整数变量的值进行互换?
A)通过第三方变量(开发时常用)
int tm;
tm = a, a = b, b = tm;
B)不通过第三方变量
a = a + b, b = a - b, a = a - b;
但如果a, b值过大会出现强制类型转换,数据会发生变化。
a = a ^ b, b = a ^ b, a = a ^ b;
8.如何对一个整数的最后一个字节,高四位和低四位进行换位?
描述:分别获取这个整数的高四位和低四位,然后合并这高四位和低四位,进行转换。
将这个整数右移八位,然后左移八位,使最后一个字节清零,在将转换后的最后一个字节加到这个整数去。
例:
int num = 70;
int num1 = num & 15;
int num2 = num & (15 << 4);
int num2 = (num1 << 4) | (num2 >> 4);
int num3 = (num>>8) << 8 | num2;
9.switch需要注意的地方?
switch语句中,遇到break和右花括号才算执行结束,退出switch,否则将继续执行下去。并不像电路中的 开关,switch只要没有break,如果选择的是第一case,那么switch语句中的所有case都会执行一遍。最后一个 case中的break可以不用写。
10.累加思想和计数器思想是什么?
累加:有一个基数,在基数基础上不断的变化得到另一个数,而下一个数在前一个数基础上继续变化,累加就是把这些数全部加起来。如何办到呢?
描述:
首先要定义一个基数,再给予范围,或者在什么样的条件下结束任务,累加,就需要不断的进行求和,多次重复相同的运算就需要循环结构了。还需要一个变量来记录前后两个数之间的增量。最后需要一个数来记录和,即前面几个数相加的和。这样就可以得出结果。
计数:就是把所要找的数据全部遍历一遍,找到一个count加1,最后把符合条件的进行全部相加。
描述:
首先要把所有数据遍历一遍,那就需要循环结构,多次重复的判断是否符合要求,然后需要一个计数器count来记录,如果符合条件,那么count加1,count也需要不断的增加,是随着每一次的遍历而变化,所以count也需要在循环的内部。
11.无限循环最简单的形式?
while(true);
for(; ;);//for中条件表达式的结果默认为true
12.for语句内部变量的生存周期或作用域?
int sum = 0;
for(int x = 1; x<=10; x++){
sum+= x;
}
sum 并不是for语句内部定义的变量,所以的当for循环结束时在内存中还未释放掉,而x定义在for语句内部,随着for训话结束,在内存中也就消失,所以后续想要使用x,就需要重新定义。所以根据变量的使用可以选择for循环还是while循环。不过x也可以定义在for循环的外部,此时就和while没什么区别,两者可以互换使用。