java基础之流程控制语句
一、位运算符、条件运算符、扩展赋值运算符
先看图, 总结记录一下这些可以偷懒的奇淫巧计的符号,其他符号比较通用,我们主要讲个讲红线框住的符号

-
位运算符
< 1、 & | ^ ~ > # 对数值的二进制位作比较 #实例 a = 0011 1100 b = 0000 1111 a&b = 0000 1100 a和b同位置的数值进行与运算,如果同位都是0就等于0,1就等于1;一个1一个0取0 a|b = 0011 1111 a和b同位置的数值进行或运算,如果同位都是0就等于0,1就等于1;一个1一个0取1 a^b = 0011 0011 a和b同位置的数值进行是否相同的比较,如果相同,就等于0;如果不相同,就等于1 ~b = 1111 0000 这个就是简单的取反 # 在shell中& | ^ 的含义: &有两个含义: 1是标准输出导向到哪里 2 把命令放到后台执行 实例: ls -l > out.file 2>&1 & 等同于 ls -l 1> out.file 2>&1 & # >和1>是一个意思,通常是省略了; 2代表错误输出的意思,所以2>&1 表示如果前面命令执行后出现错误把错误信息重定向到1那,而1又导向out.file,最后一个&代表后台执行! 所以整条命令为把ls -l的正确错误的信息都重定向到out.file,并在后台执行! |表示命令的管道, ^ 表示匹配开头 < 2、 << >> > # 在shell中: <<和>>表示,以追加的方式把数据重定向到某个文件或某个命令中 # 对数值在二进制位进行位的移动 # >>是向后位进行移动,等同于/2(除以2); << 是向前位进行移动,等同于*2(乘以2),看下例: 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 真题: 2变成16什么方式最快? 答: 当然是位运算 2<<3啦,直接跟底层打交道! (表示2这个值向前移动3位,一位是2,结果: 2*2*2*2=16) -
条件运算符
< ? : > 用于三目运算(三元表达式) # 在shell的通配符中: ?代表0个或多个任意字符(非换行符、制表符); # 在正则表达式中: ?是元字符,表示匹配0个或多个前置字符 使用语法: 判断表达式 ? yes : no 如果判断表达式结果为true,则结果取yes,否则取no 实例: public class hello { public static void main(String[] args){ int score = 50; String type = score > 60 ? "no" : "yes"; System.out.println(type); } } 返回:yes #python中的三目运算(三元表达式) 用法格式: a=1 b=2 c = b-a if b>a else a-b 如果表达式结果为真,则返回b-a,否则返回a-b # shell中的三目运算(三元表达式) a='' [[ -z a ]] && echo "a为空字符串" || echo “a不为空” # 如果a为空字符串,则打印a为空字符串,否则打印a不为空 -
扩展赋值运算符
< += -= *= /= > public class Hello{ public static void main(String[] args){ int a = 2; int b = 4; a+=b;//a=a+b a-=b;//a=a-b a*=b;//a=a*b a/=b;//a=a/b System.out.println(a) } }
二、包机制
# 定义包名
格式:
package 包文件名1.包文件名2.包文件名3;
# 必须写到最上面
# 导入包名
格式:
import 包文件名1.包文件名1.包文件名1.类名;
三、用户交互
# 咋java5加入了java.util.Scanner的用户交互类!
基本语法:
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
# 1、next()必须在输入有效字符后才能结束输入
2、当遇到有效字符后的空格时,自动截取掉空格后面的字符
3、不能输入空白字符
String str1 = scanner.nextLine();
# 1、可以获取有效字符之间的空格字符
2、使用完后记得关闭扫描器
四、选择性语句
-
if..else if ...
< # 用法一、> if (x != 0 && y !=0 && x < y){ System.out.println(y); }else{ System.out.println(x); } <# 用法二、> if (x <= 0){if (x==0) sign x=0;else x=-1; } < # 用法三、> if x > y ? x : y < shell中的if语法> 终端命令式: if [[ -z '' ]]; then echo " ''是一个空字符串"; else echo " ''不是一个空字符串 "; fi 三元表达式: a=2;b=3;[[ b -gt b ]] && echo "b大于a" || echo "a大于b" < 脚本式: > if [[ 表达式1 ]];then 执行主体1 elif [[ 表达式2]] 执行主体2 else 执行主体3 fi -
switch多重选择
# 用法: Scanner scanner = new Scanner(System.in); System.out.println("Select an option (1,2,3,4)") int choice = scanner.nextInt(); switch (choice){ //choice表示一个用户输入的选项变量 case 1; System.out.println("这是选择1"); break; case 2: System.out.println("这是选择2"); break; case 3: System.out.println("这是选择3"); break; case 4: System.out.println("这是选择4"); break; default: System.out.println("输入的选择无效"); break; }tioaj # 为了不忘记shell知识,在这也记录对比一下 # 在shell的case多选择语句与java中的switch是很相似的, 用法如下: #!/bin/bash read -p "请输入你选择的项: " choice case choice in "A") 执行体 ;; "B") 执行体 ;; "c") 执行体 ;; *) 执行体 ;; esac
五、循环控制语句
-
while循环
# while (条件表达式){ 程序主体 } # 实例 public class Operation{ public static void main(String[] args){ int a = 0; int total = 0; while (a<100){ a++; total += a; } System.out.println(total); } } -
do while
< # 用法: > do{ 程序主体 } while(条件表达式); <# 实例1 > public class Deamo1{ public static void main(String[] args){ int a = 0; int sum = 0; do{ a++; sum += a; }while(a<100); System.out.println(sum); } } <# while 与do while的区别:> while循环是先判断条件,再执行主体 do while 是先执行主体,再去判断条件,且do while必被执行一次主体,不管条件是否满足1 代码如下: <# 实例:> public static void main(String[] args){ int a = 0; while(a<0){ System.out.println(a); } System.out.println("------------------"); do{ System.out.println(a); }while(a<0); } # 输出: -------------------- 0 说明:即使条件不符合,do while依然可以执行一次! -
for循环
< java# 用法:> for(条件表达式){ 执行主体 } < java# 实例1 > //求num以内的质数 public class Zhishu{ public static void main(String[] args){ //创建一个扫描器对象 Scanner scanner = new Scanner(System.in); System.out.println("请输入求质数的范围数:"); int num = scanner.nextInt(); if (num >=2){ for (int i=2;i<=num;i++){ int status = 0; for (int j=2;j<i-1;j++){ if (i%j==0){ status = 1; break; } } if (status==0){ System.out.println(i); } } } } } < java# 实例2 > ---------------------------------------------------------------------------------- <shell# 用法: > 方式一、 for i in 1 2 3 4 do echo $i done 方式二、 for i in {1..10} do echo $i done 方式三、 for ((i=0;i<=10;i++)); do echo "nice$i" done -
加强for循环
语法: for(表达式){ //代码块 } 范例: public class Deamo(){ public static void main(String[] args){ int[] demoarr = {1,2,3,4}; for (int x:demoarr){ System.out.println(x); } } } 特点:只能用于遍历该数组元素,遍历效率高!六、跳转控制语句
六、跳转控制语句
-
break
# 跳出整个循环体,执行循环体下面的内容 -
continue
# 跳出当前这一次循环,执行下次循环
七、总结
1、三种循环控制语句的区别:
1、for循环和while循环是先判断条件是否成立,然后再决定是否执行循环体 (先判断后执行)
2、do{}while是先执行一次循环体,然后再对条件进行判断,是否继续执行循环体(先执行后判断),所以do..while循环至少执行一次循环体!
2、for与while的区别:
1、for循环结构中的变量定义在循环体中,所以只能在循环体中使用,而while的变量定义在循环体外,所以可以在循环体外
浙公网安备 33010602011771号