这是今天的笔记。
位运算是直接对二进制进行运算。
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移 左边的高位舍弃,右边空出的部分补齐0。
>> 右移 如果最高位是0,左边被移空的位就填入0;如最高位是1,左边被移空的就填入1.
>>> 无符号右移 无论最高位是1还是0,左边被移空的高位都填入0.
向左移动或者向右移动,其实就是把数据 增大或者缩小2的指定次幂。
面试题1:
请用最高的效率写出2*8这个式子。
面试题2:
请把两个数据交换。
int a = 10;
class OperatorDemo4
{
public static void main(String[] args)
{
int a = 10;
int b = 20;
//方案1:采用临时变量(开发用)
int temp = a;
a = b;
b = temp;
System.out.println(a+"****"+b);
//方案2:使用位^运算符。
//特点:一个数据对同一个数据位^运算两次,数据不变。
a = a ^ b;
b = a ^ b; // a ^ b ^ b = a;
a = a ^ b; //a ^ b ^ a = b
System.out.println(a+"****"+b);
}
}
条件运算符:(三元运算符),必须返回一个数值。
(条件表达式)?表达式1:表达式2;
注意:条件表达式说明这里将来只能是结果为true或者false的表达式。
执行顺序:
如果条件表达式为true,就把表达式1作为结果。
如果条件表达式为false,就把表达式2作为结果。
流程控制语句:
A:顺序结构 代码按照顺序从上往下执行。
B:选择结构 根据以下选择或者判断做出不同的执行。
a:选择结构
b:判断结构
C:循环结构 把某些事情做很多次。
选择结构: if语句体现
格式1:
if(条件表达式)
{
语句体;
}
执行顺序:
根据条件表达式的返回值是true还是false决定程序的流程。
如果是false,就什么都不做。
注意:
A:条件表达式:无论条件表达式是简单还是复杂,结果必须为boolean类型。
B:if语句后面可以不写{},但是,如果这样的话,它就只能控制后面的一条语句。
如果想控制多条, 就必须加{}。
推荐:无论是控制一条还是多条,请都加上{}。
C:在if语句的{}前面不要写分号,否则,会对程序的结果有影响。
一般来说:出现{}的时候,就不会有分号,有分号的时候就不会有{}。
作用域:
定义的变量的作用域,在它所属的{}内有效。
if语句的第二种格式:
if(条件表达式)
{
语句体1;
}
else//否则的意思
{
语句体2;
}
if语句的第三种格式:
if(条件表达式1)
{
}
else if(条件表达式2)
{
}
else if(条件表达式3)
{
}
....
else
{
}
注意:
A:else后面不能直接跟条件表达式
B:最后的一个else可以不写,但是建议加上。除非你明确不需要
C:if语句的第三种格式,一旦某个地方满足,if语句就不往下执行了。
案例:
定义x,y两个变量。
如果x大于3,y=2*x
如果x大于0小于等于3,y=5
如果x小于等于0,y=10-2*x
我们如果想数据的效果好一些,最好从键盘录入数据。
而键盘录入的实现方案,常用的有三种方式:
A:main后面的String[] args接收参数。
B:
使用Scanner的步骤:
A:导包
import java.util.Scanner;
B:创建对象
Scanner sc = new Scanner(System.in);
System.in:是标准输入流。对应着键盘录入。
C:调用方法获取
int i = sc.nextInt();
A:if语句的嵌套:
if语句里面的语句体本身又是一个if语句。
B:if语句的第二种情况和条件运算符的关系?
没有关系,一个是语句,一个是运算符。
但是if语句在某些情况下,可以用条件运算符替换,更简洁。
条件运算符是运算符。
是运算符应该有结果。
switch的语句格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
...
default:
执行语句;
break;
}
解释:
switch:知道这里使用的是switch语句
表达式: byte, short, int, char
JDK5以后,可以是枚举。
JDK7以后,可以是String类型。
case 取值1:
case表示这是一个选项,取值1就是这个选项的值。
break:
switch语句遇到break就结束了。
defaul:
就相当于if语句的else。当所有的取值都不匹配时,就执行default.
执行流程:
从上往下,用表达式的值去和case后面的值进行匹配,如果有匹配的,就去执行该case所包含的语句。
如果没有匹配的。就一直执行到default语句。
注意事项:
A:default可以省略吗?可以。
但是一般不省略,它相当于if的else,可以控制所有的非正常情况。
假如你非常明确,那就省略。
B:break可以省略吗?
放在是后面default的break是可以省略的。
放在case中的break是可以省略的,但是结果可能会有问题。
所以,一般不省略。
C:default可以不放在最后面吗?
可以,但是一般都放在最后面。
D:switch语句什么时候结束?
遇到break。或者执行到switch语句的末尾。
当switch找到了一个对应case或者default时,此时整个程序变成了顺序结构(不进行判断,有break打断,没break继续输出对应代码块)
|
|