1.位运算符:二进制的变化
<< 左移位运算符 5<<3=5*2^3
>> 右移位运算符 5>>3=5/2^3
>>> 无符号右移,高位补0
& 与运算 数字二进制比较,都为 1 才为1
| 或运算 数字二进制比较,有1则为1
^ 异或运算 数字二进制比较,不同才为1
~ 取反运算,最位变为相反 最高位变为相反
2.三目运算符
格式1: 布尔表达式?表达式1:表达式2;
如果布尔表达式为true执行表达式1,否则执行表达式2
格式2: 数据类型 变量名=布尔表达式?表达式1:表达式2;
此时,三木运算符后面表达式的数据类型必须和前面的数据类型保持一致
3.流程控制
顺序:程序从上到下加载,一行加载完成再去完成另一行
选择结构:if 语句 if....else... 语句 if...else if.....else语句
if(布尔表达式1){
语句1;
}else if(布尔表达式2){
语句2;
}else{
语句3;
}
流程:如果布尔表达式1为true,执行语句1,否则往下,如果布尔表达式2为true执行
语句2,否则执行语句3.
if嵌套
if(布尔1){
if(布尔2){
语句1
}else{
语句2
}
}else{
语句3;
}
流程:布尔1,2全为true执行语句1,布尔1为true,布尔2为false执行语句2.都为
false执行语句3
switch.....case语句
格式:
switch(变量){
case 常量:
语句1;
break;
default:
语句2;
break;
}
流程:如果变量等于常量,就执行语句1,否则执行语句2,break不能少,否则会穿透
循环结构:for while do{}while()
循环结构组成四部分:
1.初始化语句:循环之初,初始化一个变量,只有一次
2.条件判断(结束语句):条件满足就循环,否则就退出
3.循环内容:循环体,有规律
4.迭代语句:对初始化变量进行迭代
for循环:
格式:
for(初始化语句;条件判断语句;迭代语句){
//循环体内容;
}
执行流程:1-->2-->3-->4-->2-->3-->4--->2-->3--->4 直到 2 不满足,结束
1.负责循环变量的初始化
2.判断条件是否满足循环条件,不满足就退出循环
3.执行具体的代码逻辑
4.变量的迭代
初始化语句一定和条件判断表达式紧密结合,
迭代语句和条件表达式也是紧密结合
迭代语句就是对初始化语句中定义的变量迭代的
5 while循环语句
格式:
//1.初始化语句:
while(/2.判断条件/){
//3.循环体内容
//4.步进语句;
}
执行流程:
执行顺序:1-->2-->3-->4-->2-->3-->4-->2-->3-->4 .... 到2不满足停止
1:负责循环变量初始化
2:判断是否满足循环条件条件,不满足则跳出循环
3:执行具体的语句,实现某一个功能
4:迭代循环变量
do....while循环
格式:
//1.初始化语句
do{
//3.循环内容
//4.迭代语句
}while(/*2.判断条件*/)
行流程:1-->3-->-->4-->2-->3-->4 知道2不满足就跳出
1:循环变量的初始化
2:判断是否满足循环条件,不满足就跳出循环
3.执行语句,实现功能
4:迭代循环变量
备注,回无条件执行一次循环体内容,不建议使用,有风险哦。
循环语句区别:
for和while区别:
1.控制语句中,所涉及到的循环变量,当for循环结束后,定义到循环变量将不能再被访问到,while循环结束后依然能被访问到。
如果下面需要继续使用循环变量,那就优先使用while循环。因为for循环结束之后循环变量是会从内存中消失的。所以能提高内存使用效率
2.已知循环次次熟就用for循环,循环次数不确定就用while循环
跳出语句break和continue:
break:
终止switch和循环语句,其他的方式使用没有意义
public static void main(String[] args){
//break
//跳出循环
for(int i=0;i<=12;i++){
if(i==5){
break;
}
System.outr.println(i);
}
//跳出switch
//季节
String season="春季";
switch(season){
case "春季":
System.out.println("万物复苏的季节");
break;
case "夏季":
System.out.println("炎热的季节");
break;
case "秋季":
System.out.println("看枫叶的季节");
break;
case "冬季":
System.out.println("万里冰封的季节");
break;
default:
System.out.println("超出三界外,不在五行中!");
break;
}
}
continue:
结束本次循环继续下一次循环
public static void main(String[] args){
//continue
//求1-100内的偶数和·
int sum=0;
for(int i=0;i<=100;i++){
if(i%2==0){
sum+=i;
}else{
continue; //基数跳过不参加累加和
}
}
}
扩展知识点
1.死循环:一直循环,寻寰中的条件永远都是true,永远不会结束
2.循环嵌套:一个循环的循环体是另一个循环,
循环次数=外部循环次数乘以内部循环次数
格式:
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
System.out.println("输出次数:"100);
}
}
执行流程:每一次外部循环,内部循环都完整循环一次
java
public static void main(String[] args){
//使用场景
//打印一个38的长方型
for(int i=0;i<3;i++){
for(int j=0;j<8;j++){
System.out.print("");
}
}
}
Scanner类和Random类的使用
API(Application Programming Interface):应用程序编程接口,提高代码的质量。javaAPI就是一本程序员的字典,JDK提供的说明文档,搜索自己需要的类。
Scanner类:
可以解析基本数据类型和字符串的文本扫描器。
作用:把外部的数据录入到系统内部。
Scanner sc=new Scanner(System.in); System.in:通过键盘实现网系统录入数据
//让系统能够从外部录入一个整数 nextInt()
int num=sc.nextInt();
//让系统能够实现从外部录入一个浮点数
double num1=sc.nextDouble();
//让系统能够实现从外部录入一个字符串
String num2=sc.next();