关系运算符
== < <= > >= != 特点:结果是boolean型
逻辑运算符
逻辑运算符 :&& || !
需要注意:短路与,短路或
位运算符
位运算符 :操作位的 与(&)、非(~)、或(|)、异或(^)
排序查找常用
^按位异或 作用:交换两个数的值
交换两个数:1.借助第三方变量 2.使用异或 x^=y y^=x x^=y
-
交换两个数的值
int x = 4 ,y =5;
第一种方法:借助三方变量
int tmp = 0;
tmp = x;
x = y;
y = tmp;
第二种方式:使用^
x = x ^ y;
y ^= x;
x ^= y;
System.out.println(“x:”+x+" y:"+y);
/*
- 0101 x
- 0100 y ^
- 0001 X
- 0100 y
- 0001 X ^
- 0101 y--------5
- 0001 X
- 0101 y ^
- 0100 x--------4
*/
按位与定向清零
网段:对于IPV4来说,两个IP地址前三个部分相同,他们就在同一个网段
网关:是当前网段中的一个IP地址可以理解成守门员
IP地址:上网时在网上的唯一凭证(身份证),默认与网关同一网段
子网掩码:用来确认IP地址是否在当前网段
子网掩码与IP按位与 结果和网段比较
网段: 192.168.1.0
网关: 192.168.1.1
IP地址:192.168.1.34
子网掩码:255.255.255.0
192.168.1.34
255.255.255.0 &
192.168.1.0 用这个值与网段比较,相同则认为在当前网段.
移位符
左移<< 右移>> 无符号右移>>>
“>>”无符号右移
没有无符号的左移只有无符号的右移
作用:二分查找 除二右移
空表达式;
表达式:
光写一个; 空语句
三目运算符
条件?结果1:结果2
作用:求最大
-
原理:当作为条件的表达式的结果为true,整个三目元算符的结果就是结果一,否则就是结果二
int m =5,n=3,z=6;,
//找出最大值
int y1 = m>n?m:n;
int x1 = y1>z?y1:z;
System.out.println(x1);
流程控制语句
顺序,分支,循环
Scanner 输入
实现让用户控制输入月份
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();//让用户从控制台输入一个整数并存储到month中
if
if条件成立的时,只有一条执行语句,后面的{}可以省略,如果想跟多条语句,必须加{}
switch
switch(只能有一个值){
case 1:{执行语句1; }
break;//是结束的意思
case 2:{执行语句2; }
break;
case 3:{执行语句3; }
break;
case 4:{执行语句4; }
break;
default:{执行语句5; }
break;
//break是结束的意思,当我们对某一个分支不写break,程序不会停止,
//继续执行下一个分支,一直到遇到break为止,或者将所有的分支执行一遍结束
//我们将switch使用break的这种结构称为break的穿透性.
//2.switch后面()中的可以取的值:整型,字符串(从jdk1.7开始使用),字符,枚举
//if和switch的使用场景
//当我们有很少的分支时,尽量使用if
//当分支较多时可以使用switch
循环结构
循环结构 while do while for
三要素:1.判断(起始)条件 2.结束条件 3.自增量的设置
dowhile 与while的区别:就是dowhile不管条件成立与否,语句都会先执行一次
for 循环
/*for
for(定义的初始值;结束的条件;自增量(变化量))
{
执行语句;//循环体
}
- 原理:
- 1.会执行起始条件
-
2.判断结束条件,有两种情况:第一种不成立,直接结束循环.第二种成立,就去执行循环的语句
-
3.执行自增量
-
4.继续执行结束条件,依次反复进行,直到结束条件不成立,结束循环
-
起始条件:肯定执行一次
-
结束条件:至少一次
-
自增量:0次或多次
-
执行语句:0次或多次
-
- 1.会执行起始条件
循环注意点
//注意点:
//1.for循环和while的区别:在循环中是否使用i值.使用i值就使用for,不用i值就使用while
//举例:
while (true) {
//达到条件时执行break
//条件可以是:1.对一篇文件结束 2.接受网络资源
break;
}
//2.for后面也可以直接跟;
//3.使用循环要防止出现死循环
//for(;😉; //已经是死循环
//4.循环可以嵌套,可以给for循环添加标识,我们可以认为是给他起了一个别名.
//提问:当u=2,r=3的时候将整个的二层循环结束
**a:**for(int u=1;u<10;u++) {
**b:**for(int r=1;r<10;r++) {
System.out.println(“u:”+u+" r:"+u);
if (u= =2 && r==3) {
break a;
}
}
}