xie-wen-hui
船帆虽小,却也能远航!

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的变量定义在循环体外,所以可以在循环体外

posted on 2021-01-17 13:24  xie-wen-hui  阅读(73)  评论(0)    收藏  举报