JavaSE.20190424.运算符(二).Scanner.Random.流程控制语句.

一.运算符(二)

    1.赋值运算符

       1)基本赋值运算符
           =    java中唯一个自右向左运算的符号
       2)扩展赋值运算符(算数运算符+基础赋值运算符)
           +=   -=   *=   /=    %=
           eg: a+=3;  ==> a=a+3;
           缺点:不直观
           优点: 自动做强制类型转换,提高执行效率,
           * 推荐使用扩展赋值运算符*    

     2.比较运算符|关系运算符
         结果是boolean类型的值
            >  <   >=  <=   仅适用于类型byte  short  int  long   float  double  char
             ==         !=     可以做基本数据类型的比较,可以做引用数据类型的比较

     3.逻辑运算符
        1)两边的操作数都得是值为布尔类型的表达式

& 与 两个操作数都是true才是true,一个为false结果就为false
| 或 一个为true就是true,两个都为false才为false
! 非 取反  !true-->false
^ 异或 相同为false,不同为true

         2)短路 :如果左边的操作的值就能决定最终整个表达式的结果,右面的表达式就不在执行
              &&    两个操作数都是true才是true,一个为false结果就为false
               ||      一个为true就是true,两个都为false才为false
              *推荐使用短路与      短路或*

     4.条件运算符 :  三目| 三元
        1) 条件表达式 ? 值1 : 值2 ;
        2) 执行流程:
            a.先执行条件表达式  -->值为boolean类型的表达式 
            b.如果结果为true, 最终结果取值1
            c.如果结果为false,最终结果取值2

public class Operator04{
	public static void main(String[] args){
		int a=6;
		int b=7;
		//得到ab之间最大的值
		int max = a>b ? a : b;
		System.out.println(max);
		//计算a是否为一个偶数
		String str=a%2==0? "偶数" : "奇数";
		System.out.println(str);
	}
}

    5.位运算符(选择性了解) 
       1)如何执行:  操作数先转为2进制,进行运算,得到结果再转为十进制;
       2)优点 : 比直接做运算效率高
       3)   &  二进制的两个数,同一位置的值,进行逻辑判断,两个值如果有一个为0就为0,两个值都是1才是1
               |   同一位置的两个数,如果有一个为1就是1,两个都是0才是0
              ^   同一位置的两个数,如果相同为0,不同为1    

public class Operator05{
	public static void main(String[] args){
		System.out.println(2&3);  //2
		System.out.println(2|3);  //3
		System.out.println(2^3);  //1
	}

}

    6.位移运算符(选择性了解) 
         >>  右移   左边的操作数转为二进制以后,向右移动第二个操作数个位数,保留分水岭左边的内容转为十进制   分水岭:左边操                            作数二进制形态的最右边有一个分水岭
                         总结:    8>>3  ==> 8/2^3  第一个操作数 / 2^第二个操作数次方

                          


         <<  左移   左边的操作数转为二进制以后向左移动第二个操作数个位数,剩余空间补0,再转为十进制
                          总结:   8<<3  ==> 8*2^3  第一个操作数 * 2^第二个操作数次方

                             
         

public class Operator05{
	public static void main(String[] args){
		System.out.println(8>>3);  //1
		System.out.println(3>>1);  //1
		System.out.println(10>>2);  //2
		System.out.println(8<<3); //64
		System.out.println(3<<2); //12
	}

}

    7.运算符的优先级:

      单目  乘除  位  关系  ,   逻辑  三目  后  赋值

二.Scanner  (键盘输入    类名    引用数据类型)
     1.基本数据类型
         例如:    int a=4;
     2.使用引用数据类型的方式
        1)创建引用数据类型的变量|引用
            公式:    引用数据类型 变量名|引用 = new 引用数据类型();
        2)使用功能
            引用.功能名字();
     3.Scanner使用步骤:
        1)导包 import 相对地址------> import java.util.Scanner;   
            提供类Scanner的位置
            位置:类的上面导包
        2)创建Scanner类型的引用 ------> Scanner sc=new Scanner(System.in);
        3)功能名字();

nextInt() 接收用户输入的int类型整数  
nextByte() 接收用户输入的byte类型整数  
nextShort() 接收用户输入的Short类型整数  
nextLong() 接收用户输入的Long类型整数  
nextDouble() 接收用户输入的Double类型整数  
nextFloat() 接收用户输入的Float类型整数  
next() 接收用户输入的String类型数据 从有效字符开始接收,直到遇到空格,多个宫格,tab结束接受,遇enter停止功能;
nextLine() 接收用户输入的一整行的内容

从第一个位置开始接收,直到输入enter结束;

注:nextLine()功能之前如果存在系列的next功能.需要处理遗留在缓冲区的enter;


          

        4) 引用.close();   一定要在用完之后关闭,否则当前类中重新开启也不能用 

       

//导包
import java.util.Scanner;
public class Scanner07{
	public static void main(String[] args){
		//2.创建Scanner类型的引用
		Scanner sc=new Scanner(System.in);
		//3.使用功能
		//int i=sc.nextInt();
		//int i=sc.nextByte();
		//System.out.println(i);
		//double d=sc.nextDouble();
		/*
		String str=sc.next();
		System.out.println(str);
		//处理缓冲区中遗留的enter
		//sc.nextLine();
		String str1=sc.nextLine();
		System.out.println(str1);
		*/
		
		/*
		模拟用户的登录:
			laopei  0523
			
			1.键盘输入
			2.使用功能 接受用户名和密码
			3.判断是否满足
			4.输出信息
			
			注意: 字符串比较是否相等   字符串1.equals(字符串2)  比较字符串1与字符串2是否相等,如果相等返回true,不相等是false
		*/
		System.out.println("请输入用户名:");
		String uname=sc.nextLine();
		System.out.println("请输入密码:");
		String upwd=sc.next();
		//条件运算
		//boolean flag1="laopei" == uname ? true : false;
		String s=uname.equals("laopei") && "0523".equals(upwd) ? "登录成功" : "用户名或密码不正确";
		System.out.println(s);
		
		//关闭
		sc.close();
		
		/*
		Scanner sc2=new Scanner(System.in);
		int n=sc2.nextInt();
		System.out.println(n);
		*/
		
	}

}

        5)引申:  String  是类名    引用数据类型

           注意: 字符串比较是否相等:

                格式:   字符串1.equals(字符串2)   

                     *比较字符串1与字符串2是否相等,如果相等返回true,不相等是false*

String flag1="laopei".equals(uname)?ture:false;

三.Random  (类  引用数据类型    产生随机数)
    1.导包 ------> java.util.Random
    2.创建类型的引用   ------> Random ran=new Random();
    3.使用功能
       1)产生随机整数
                nextInt()   --> int范围内的随机整数
                nextInt(n)  --> 随机产生 [0,n) 随机整数 
                    n 只能决定最大范围
       2)产生随机小数
                nextDouble()   [0.0,1.0) 随机小数
       3)也叫伪随机数
       4)常用公式:
            [0,max)   引用.nextInt(max);
            [0,max]   引用.nextInt(max+1);
            [min,max) 引用.nextInt(max-min)+min;
            [min,max] 引用.nextInt(max-min+1)+min;       

//1.导包
import java.util.Random;
public class Random08{
	public static void main(String[] args){
		//2.创建类型的引用
		Random ran=new Random();
		//3.nextInt()
		int i1=ran.nextInt();
		System.out.println(i1);
		//nextInt(n);
		//[0,5)
		i1=ran.nextInt(5);
		System.out.println(i1);
		//[0,10]
		i1=ran.nextInt(11);
		System.out.println(i1);
		//[2,5)    [0,3)+2  [2,5)
		i1=ran.nextInt(5-2)+2;
		double d=ran.nextDouble();
		System.out.println(d);
	}
}

四.流程控制语句     

    1.选择结构: 
            if ..else
            switch
       1)单分支|单选择
                 if(条件表达式){
                        语句体...
                  }
           *条件表达式:值为boolean类型的表达式
           *执行流程:
                a.计算条件表达式的结果
                b.如果false,就跳过if结构,继续向下执行
                c.如果为true,执行{}中的语句体
        2)双分支|双选择
               if(条件表达式){
                   语句体1...
               }else{
                   语句体2
               }
            即:  如果条件满足执行语句体1,条件不满足执行语句体2
         3)多选择|多分支
               if(条件表达式1){
                   语句体1...
               }else if(条件表达式2){
                   语句体2...
               }else if(条件表达式3){
                   语句体3
               }else{
                   语句体n;
               }
            *执行流程:
                a.先执行条件表达式1,如果为true,执行语句体1
                b.如果为false,计算条件表达式2,如果为true,执行语句体2
                c.如果为false,计算条件表达式3,如果为true,执行语句体3
                d....
                e.如果以上条件都不满足,执行else中的语句体n
             

public class Demo09{
	public static void main(String[] args){
		int age=11;
		//单选
		/*
		if(age>=7){
			System.out.println("孩子,来接受教育吧!!!");
		}
		*/
		//双选
		if(age>=7)
			System.out.println("孩子,来接受教育吧!!!");
			//System.out.println("来接受教育吧!!!");
		else 
			System.out.println("回家玩泥巴!!!");
		System.out.println("回家玩泥巴!!!!!!!!!!!!!!!!!!!!!!"); //不受if..else的控制
		//多选择|多分支
		/*
		if(age>0){
			System.out.println("age>0!!!");
		}else if(age==0){
			System.out.println("age=0!!!");
		}else{
			System.out.println("age<0!!!");
		}
		*/
		/*
		if 和 三元运算符 之间的选择
			1.if能够对多个条件进行判断
			2.三元运算符肯定有结果, if可以没有结果
			3.if结构清晰,三元运算符结构简单效率较高
		*/
	}
}

   2.  switch  定值判断
        1)   switch(表达式){
                     case 值1:
                            语句体1;
                            break;
                     case 值2:
                            语句体2;
                            break;
                           ....
                    default:
                           语句体n;
                           break;
                 }
         2)表达式仅为这几类: byte,short,int,char , 枚举(1.5),字符串(1.7) 这几种类型的值
         3) case: case后面接的值是与表达式进行判断,必须是一个值,不能是区间
         4) break: 防止case穿透 结束switch语句
         5) case穿透:从满足条件的语句体开始执行,如果遇到break结束switch,如果没有break下面的case不再判断直接执行语句体
         6) default:默认的,相当于else,如果以上都不满足,就执行default中的内容
             default位置可以改变
     3.if与switch之间的区别:
        1) if可以做区间判断
        2) switch 定值判断
        3) 能用switch都可以用if ,但是能用if的不一定能用switch    

public class Demo10{
	public static void main(String[] args){
		String flag="黄灯";
		/*
		switch(flag){
			default:
				System.out.println("灯坏了!!!");
				break;
			case "绿灯":
				System.out.println("绿灯行");
				break;
			case "黄灯":
				System.out.println("黄灯等一等");
				break;
			case "红灯":
				System.out.println("红灯停");
				break;
		}
		*/
		switch(flag){
			case "绿灯":
				System.out.println("绿灯行");
				break;
			case "黄灯":
				System.out.println("黄灯等一等");
				break;
			case "红灯":
				System.out.println("红灯停");
				break;
			default:
				System.out.println("灯坏了!!!");
		}
		byte i=10;
		switch(i*10){
			case 10:
				System.out.println("10");
				break;
			case 100:
				System.out.println("100");
				break;
		}
		boolean b=false;
	}
}

     4.循环  (重复执行一些代码)

              for
              while
              do...while
         1) for循环
                   for(条件初始化;条件判断;条件变化 ){
                         循环体语句;
                    }
              执行流程:
                a.先执行条件初始化  声明一个变量并且赋值 i
                b.条件判断   对i进行判断   值为boolean类型的表达式
                    如果值为false,for循环结构结束,如果值为true,执行循环体语句
                c.条件变化
                   重复执行2,3步
              注意:在循环体语句中可以使用i的值   
                      变量i可以决定循环执行的次数

public class Demo11{
	public static void main(String[] args)
		for(int i=1;i<=10;i++){
			System.out.println("葵花小课堂开课啦!!!孩子感冒老不好多半是废了!!!"+i);
		}
		//打印10~20之间的数
		for(int i=10;i<=20;i++){
			System.out.println(i);
		}
		//求1+2+3+4的和  
		int sum=0;
		for(int i=1;i<5;i+=1){
			sum+=i; //sum=sum+i;
		}
		System.out.println(sum);
	}
}

 

猜你喜欢

转载自blog.csdn.net/LiangEdward/article/details/89500793