逻辑运算符有什么用?
用于连接俩个boolean类型的表达式
&:与
|:或
&:与符号的运算特点:
true & true =true
true & false =false
fase&true=false
false&false=false
&:与运算的俩边只要有一个是false,结果肯定是false
只有俩边都是true 结果才是true
|:或运算特点
运算的俩边只要有一个true,结果肯定是true
只有俩边都是false,结果才是false
^:异或: 和或有点不一样
true^true=false;
false^false=false;
运算特点:
^符号的俩边的结果如果相同,结果是false
俩边的结果不同,结果是true
!非运算,判断事物的另一面
&&:
和& 运算的结果是一样的。但是运算过程有点小区别。
&: 无论左边的运算结果是什么,右边都参与运算
&&:当左边为false时,右边不参与运算的。
||:
和|运算的结果一样的。但是运算过程有点小区别
|: 无论左边的运算结果是什么,右边都参与运算
||:当左边为true时,右边不参与运算的。
位运算符
位运算是直接对二进制进行运算。
6&3 这个怎么运算啊?
首先6是二进制的 110
然后3是二进制的 011
对于数字的与操作
注意: 对于0代表着假,1代表着真
所以如下:
或运算
异或 整数
<<左移
首先3的2进制的是011 ,3<<2 左移2位
总结:左移几位,就是该数据乘以2的几次方。
右移几位,就是该数据除以2的几次方。对于高位出现的空位,原来是什么就用什么来补。这个是对于右移的。
无符号右移:数据右移时,高位出现的空位,无论高位是什么都用0来补位。
练习:
1.最有效的方式算出2*8等于几?
答案是2<<3 .对于高效算出数据首选位移运算。
2.对俩个整数变量的值进行互换(需要第三方变量)
答案:(答案是高效但是可阅读性差)
三元运算符
程序的流程控制
其实还有一个就是顺序结构从上到下。自己运行就可以了
判断结构
三元运算符什么时候用?
当if else 运算后,有一个运算结果时,可以简化成三元运算符。
局部代码块,可以定义局部生命周期,可以用作优化,虚拟机内存空间有限。
if else 的使用
siwtch语句
switch (key) {
case value:
break;
case value2:
break;
default:
break;
}
- 首先这里的key就是一个表达式,另外在switch语句中可以省略break语句,但是有一个要求,这个break必须挨着} 也就是上面的语句示例,只有default中的break可以去掉如下:
switch (key) {
case value:
break;
case value2:
执行语句
break;
default:
执行语句
//break;
}
- 然后就是switch语句的执行是从上到下,也就是说首先执行第一个case。如果把defalut语句放到最上面也是先执行case value:
下面看下一个例子:
如图所示那么输出的语句是什么呢?
首先x=2,在几个case中没有合适的值,所以首先执行的是defalut中的语句,也就是首先输出的是d,因为在defalut中没有break语句所以不会结束,它会接着执行直到遇到break。所以输出的结果是: d a b
下面在来看下用switch 语句输出季节:
对于输入月份输出季节用了if else 和switch 俩种方式进行解决。那么什么时候该用if else 什么时候该用switch呢?
对于几个固定的值判断,建议使用switch语句,因为switch 语句会将具体的答案都加载进内存效率相对高一点。
java基础 循环
/**
* While(条件表达式)
* {
* 执行语句;
* }
*/
do while语句的特点是:无论条件是否满足,循环体至少执行一次。
/***
* do
* {
* 执行语句;
* }while(条件表达式);
*/
do {
System.out.println("6");
++i;
}while(i<0);
练习
/**
* 练习1~100之间,6的倍数出现的次数
*
* 思路:
* 首先把每个数拿出来,然后查看是否是6的倍数。条件是 6的倍数就是余数是0
*
* 步骤:
* 1.首先循环1~100
* 2.输出所有六的倍数
* 3.记录输出的次数。
* @param args
*/
public static void main(String[] args) {
int i=1;
int count=0;
while(i<=100) {
if(i%6==0) {
++count;
}
++i;
}
System.out.println(count);
}
for循环
不是所有的for循环都是以下这样的:
for(int i=0;i<3;i++) {
System.out.println("6");
}
也可以这样的:
int x=1;
for(System.out.println("?");x<3;System.out.println("A")) {
System.out.println("d");
x++;
}
输出的结果是:? d A d A
int x=1;
int y=2;
for(int z=y>x?y:x;z<8;z++) {
System.out.println("z"+z);
}
结果是:
z3
z4
z5
z6
z7
for 和while 的特点:
1.for和while可以互换
2.格式上的不同,在使用上有点小区别.
如果需要通过变量来对循环进行控制,该变量只作为循环增量存在时,区别就体现出来了。
打印1~10的数字
int x = 1;
while (x < 11) {
System.out.println("x=" + x);
x++;
}
System.out.println("x====="+x);
for(int y=1;y<5;y++) {
System.out.println("y="+y);
}
// System.out.println("y======"+y); //这里在编译会出错,for循环结束后y就不存在了,