Java复习 2019.3.29

一、运算符

1、算数运算符
2、自增自减运算符
3、赋值运算符
4、逻辑运算符
5、比较运算符
6、位移运算符
7、三元运算符

(1).算数运算符

1、用于做运算使用的运算符
2、+ - * / %
3、+:(1)表示一个正数
	 (2)进行加法运算
	 (3)拼接字符串
4、-: (1)表示一个负数
     (2):做减法运算
5、*:做乘法运算
6、/:(1)做除法运算
	注意:如果是两个整数相除,得到的结果还是一个整数。
		如果任意一个整数是小数,那么结果就是小数
7、%:取余运算符(取模运算符)
	结果:运算的结果是两个整数相除的余数
		注意:取余的结果的符号只和%前面的操作数有关
	作用:判断一个数是否被整数,判断一个数的奇偶

8.代码如下所示
public class Yun {
    //算数运算符
    public static void main(String[] args) {
        //+
        System.out.println(+1);//表示一个正数,打印结果为1
        System.out.println(21 + 12);//表示两个数相加,打印结果为33
        String str = "world";
        System.out.println("hello" + "world");//表示字符串拼接,打印结果为helloworld
        System.out.println("hello" + str);//打印结果同上
        //-
        System.out.println(-1);//表示一个负数打印结果-1
        System.out.println(21-12);//表示两个数相减,打印结果9
        //*
        System.out.println(1*2);//乘,打印结果2
        //  /
        System.out.println(2 / 1);//两个整数相除结果也是整数,打印结果2
        System.out.println(2.0 / 1 );//如果任何一个数是小数,则结果也是小数 2.0
        // %
        System.out.println(5 % -2); // 5 / 2 = 2...1 打印结果为1
        System.out.println(-2 % 5);// -2 / 5 =0 ...2 打印结果 -2
        int i = 45;
        System.out.println(i % 10);//结果为5
        System.out.println(i / 10);//结果为4
        System.out.println(i / 10.0);//结果为4.5
    }
}

1616833434263

(2).自增自减运算符

1、++,--
2、++:自增运算符
3、--:自减运算符
作用:在【变量】的基础上进行+1或者-1的操作
4、注意:
	(1)++,——既可以写在 变量的前面,也可以写在变量的后面
	(2)当i++和++i作为一条单独的语句存在的时候,++在前在后没有区别都是在变量的基础之上进行+1的操作
	(3)当i++和++i做为表达式存在的时候,++在前,先运算(先进行+1)再取值,++再变量的后面,先取出变量的值,再进行+1的操作。
5.如下代码所示
     int l = 10;
        System.out.println(++l);//这里打印10 + 1 =11
        System.out.println(l++);//这里也是11
        System.out.println(--l);//这里相当于 12 - 1 = 11
        System.out.println(l--);//这里也是11
        //这就是作为表达式和单独语句的区别,不懂得话可以懂debug跑一下就明白了
        System.out.println(l);//这里再打印就会变为10

1616834585237

(3).赋值运算符

1、用于给变量进行赋值的运算符
2、分类:
	基础的赋值运算符 :  =
 	扩展的赋值运算符 :  +=, -+, /+, *=, %=
3、基本的赋值运算符
	将赋值运算符右边的值,赋值给左边的变量
4、扩展的赋值运算符
	将运算的结果赋值给左边的变量
5.代码如下所示
  //赋值运算符
        // =
        int k = 10;//这里的意思 不是 i等于10 ,而是把10这个值赋予给了i;将赋值运算符右边的值,赋值给左边的变量
        // += -= *= /= %=
        k += 20;//k = k + 20
        System.out.println(k);//30
        k %= 9;// k = k % 9;
        System.out.println(k);//3
        //以此类推

1616835345236

(4).比较运算符

1、用于做比较运算的运算符,比较两个数据大小关系的运算符
2、分类:
	>,<,>=,<=:可以比较两个数据的大小关系
	==,!=:比较两个数据是否相等的关系
3、运算结果:
	布尔类型,只有true和false两种结果。
4.代码如下
//		>,<,>=,<=
		System.out.println(4 > 3);//true
		System.out.println(4 < 3);//false
		System.out.println(3 >= 3);//true
		System.out.println(4 <= 4);//true
//		注意: 1 < a < 3,是不合法的
		int a = 2;
//		System.out.println(1 < a < 3);//java不支持 这种写法
		System.out.println("0-------------------------");
//		==,!=
		System.out.println(3 == 3);//false
		System.out.println(4 != 3 );//true

1616835389992

(5).逻辑运算符

1、用于处理逻辑运算的使用的运算符
2、&&(逻辑与) &(按位与)
   ||(逻辑或) |(按位与)
3、&&:进行对逻辑值进行处理的时候,没有区别
	全真为真,否则为假
	true && true  true
	true && fasle false
	false && true false
	false && false false
4、||、逻辑或,全假为假,否则为真
	true || true  true
	true || fasle true
	false || true true
	false || false false
注意:
		boolean boo1 = (a > 20) && (b++ > 10);
		boolean boo1 = (a > 20) & (b++ > 10);
		&&,第一个表达式运算结果为false,那么就不会计算第二个表达式了。效率更高
		&,按位与,即使第一个表达式运算结果为false,还会计算第二个表达式。
5、!;逻辑非,遇真为假,遇假为真
	!true    false
	!false   true
6、代码如下
//		逻辑运算符
//		&&  逻辑与 全真为真,否则为假
        System.out.println(true & true);
        System.out.println(true & false);
        System.out.println(false & true);
        System.out.println(false & false);
        System.out.println("------------------------------------");
//		||  逻辑或 全假为假,否则为真
        System.out.println(true || true);
        System.out.println(true || false);
        System.out.println(false || true);
        System.out.println(false || false);
//		! 逻辑非
        System.out.println("----------------------");
        System.out.println(!true);
        System.out.println(!false);
//      &按位与,以二进制计算 两位都是1的时候才会是1
        System.out.println("-------");
        System.out.println(4 & 2); // 4 = 0100 2 = 0010
        //0100
        //0010
        //----
        //0000
        //所以运算结果为0
        System.out.println(1 & 1);//0001 0001所以为1
        System.out.println(2 & 2);//则为2 0010
        System.out.println(3 & 3);//则为3 0011
        System.out.println(101 & 110);//101 转二进制=0101 110转二进制=0110 最后结果则为100
        //0101
        //0110
        //----
        //0100
        //0100二进制转换结果为100

1616845612422

(6).位移运算符

1、对于数据在内存中的表示,进行按照位移进行移动,以此达到进行运算的目的。
2、说明:只能操作整数类型的数据,运算结果还是一个整数
3、<<,>> ,>>>
4、<<;左移运算符,每次移动一位,会将原来的数字扩大2倍
5、>>:右移运算符,每移动一位,会将原来的数字缩小为原来的2分之1
6、>>>:无符号的右移:每移动一位,会将原来的数字缩小为原来的2分之1,这个只能针对正数使用。
7、代码如下
 //位移运算符
        //>> << >>>
        System.out.println(-4 >> 2);//向右移动一位 除以2
        System.out.println(-4 << 2);//向左移动一位 乘以2
        System.out.println(4 >>> 2);//无符号右移,只能正数使用

1616846109157

(7).三元运算符

1、元:可以操作的数据或者表达式
2、三元运算符:同时可以操作三个数据或者三个表达式的运算符
3、运算符: ?  :  将三个数据或者三个表达式进行分隔
4、格式:
	表达式1(数据) ? 表达式2(数据) : 表达式3(数据)
5、说明
	(1)表达式1(数据)运算结果必须是boolean类型,(boolean类型的表达式)
	(2)表达式2和表达式3没有任何要求,可以是任意的数据或者表达式
6、运算流程
    (1)计算表达式1的结果,结果只有两种,true或者false
    (2)如果表达式1为true,就会将表达式2(数据2)作为整个三元表达式的值
    (3)如果表达式1为false,就会将表达式3(数据3)作为整个三元表达式的值
7、注意:
    (1)三元运算表达式,不能单独作为一条语句存在,除非定义一个变量接收三个运算表达式运算的结果,或者直接打印三元运算表达式的结果
    (2)如果表达式2和表达式3,数据类型不一致,不能定义一个具体类型的变量进行接收,但是可以直接打印
        //三元运算符
        System.out.println(4 < 5 ? "正确" : "错误");// 4小于5吗? 结果是ture 所以打印结果是第二条表达式为正确
        System.out.println(4 > 5 ? "正确" : "错误");// 4大于5吗? 结果是false 所以打印结果是第三条表达式为错误
        //三元运算表达式,不能单独作为一条语句存在,除非定义一个变量接收三个运算表达式运算的结果,或者直接打印三元运算表达式的结果
        String s = 4 < 5 ? "正确" : "错误";
        System.out.println(s);
        //如果表达式2和表达式3,数据类型不一致,不能定义一个具体类型的变量进行接收,但是可以直接打印
//        char str = 4 < 5 ? "正确" : '错'; //这是一个错误语句,但是直接打印就没有问题
        System.out.println(4 < 5 ? "正确" : '错');

1616846916275

二、键盘录入

1、键盘录入:在程序的运行过程中,可以让用户录入一些数据,存储到变量内存中,在后续的过程中,可以对该数据进行一些操作。
2、步骤:
	第一步:导包,在类声明的上面,import java.util.Scanner;
	第二步:创建键盘录入对象,Scanner sc = new Scanner(System.in);
	第三步:调用Scanner中的nextInt()方法,实现键盘录入一个整数
		int i = sc.nextInt();
	第四步:就是对键盘录入的数据进行处理或者使用
//导的包,不需要手动,自动就能导包
import java.util.Scanner;

public class Scan {
    public static void main(String[] args) {
        //键盘录入
        //创建键盘录入对象,Scanner sc = new Scanner(System.in);
        Scanner scanner =new Scanner(System.in);
        //调用Scanner中的nextInt()方法,实现键盘录入一个整数
        System.out.println("请输入第一个数字");
        int i = scanner.nextInt();
        //调用几次nextInt()方法就录入几个整数
        System.out.println("请输入第二个数字");
        int j = scanner.nextInt();
        System.out.println("j = " + j);
        //对键盘录入的数据进行处理或者使用
        i *= 20;
        System.out.println("i =" + i);

        //打印语句写哪里都无所谓,最终录入完以后才会进行打印
    }
}

1616847415563

小练习
键盘录入一个整数,判断录入数字的奇偶
package Lian;

import java.util.Scanner;

public class Sca {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数字");
        int i = sc.nextInt();
        String str = i % 2 == 0 ? "偶数" : "奇数";
        System.out.println(str);
    }
}

1616847777206

三、分支语句

1、顺序结构
	从上到下,从左到右
2、程序到达某种状态的时候,可能会有多种情况,对于每种情况提前准备好,所以对于这种情况就成为分支结构
	特点:代码写的多,程序运行的少
3、实现格式
	if语句:if如果的意思,满足了特点条件,才能执行指定的代码,可以实现不同的逻辑
		if()
		if...else()
		if...else if()...else if()...else if()....else
	switch语句:根据指定的变量的值,匹配和该变量值相同的case语句,执行对应的代码

if语句第一种格式

public class If {
    public static void main(String[] args) {
      int  i = 18;
      if (i >= 18){//能够控制的代码,只限于if语句后的大括号中
          System.out.println("成年了"); //如果大于等于18 则打印此语句
          //		执行流程
//			(1)计算布尔表达式的值,结果只有两种,要么为true要么为false
//			(2)如果布尔表达式的值为true的时候,就会执行语句体
//			(3)如果布尔表达式的值为false,不会执行语句体
      }
      
    }
}

if语句第二种格式

1、格式:
	if(布尔表达式){
		语句体1;
	}else{
		语句体2;
	}
2、执行流程
    (1)计算布尔表达式的值,结果只有true和false
    (2)如果布尔表达式的值为true,就执行语句体1,if语句就结束了
    (3)如果布尔表达式的值为false,就执行语句体2,if
3、注意:
	语句体1和语句体2有没有可能够执行? 
		没有。
	语句体1和语句体2有没有可能够不执行?
    	没有.至少要执行其中的一条语句。
import java.util.Scanner;

public class If2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的年龄");
        int age = sc.nextInt();
        if (age >= 18){
            System.out.println("成年了,可以进网吧了");
        }else{
            System.out.println("未成年,回家写作业");
        }
    }
}

if语句第三种格式

1、格式:
	if(条件表达式1){
		语句体1;
	}else if(条件表达式2){
		语句体2;
	}else if(条件表达式3){
		语句体3;
	}else if(条件表达式4){
		语句体4;
	}else if(条件表达式5){
		语句体5;
	}....else if(条件表达式n){
		语句体n;
	}else{
		语句体n+1;
	}
2、执行流程
	(1)计算条件表达式1的值,如果为true,就执行语句体1,结束if。。。else if语句
	(2)如果条件表达式1的值为false,计算条件表达式2的值,如果为true,就执行语句体2
	(3)如果条件表达式2的值为false,,就计算条件表达式3的值,。。。以此类推
	(4)如果条件表达式1-条件表达式n的值都为false,就会执行else中的内容
3、说明(注意):
	(1)最后的else是可以有,也可以没有的,如果有了else,那么对于if。。 else if语句而言,至少会执行一条语句
		如果没有else那么if。。。else if语句就有可能一条语句都不执行
	(2)	有没有可能同时执行多个语句体呢?
		没有可能的,即使多个条件判断表达式都满足,只会执行第一个满足条件的语句体,执行完语句体后,if。。。else if语句就结束了,就不会向下再进行匹配了
import java.util.Scanner;
//if语句第三种格式
//能力值分类查找案例
public class If3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找角色的能力值:");
        int i =sc.nextInt();
        if (i >= 95){
            System.out.println("梅西 C罗 内马尔 阿扎尔 莫德里奇");
        }else if (i >=90){
            System.out.println("德布劳内 阿圭罗 拉莫斯 范戴克");
        }else if (i >= 85){
            System.out.println("哈兰德 桑乔 德莱赫特");
        }
    }
}
//		执行流程
//		(1)计算条件表达式1的值,如果为true,就执行语句体1,结束if。。。else if语句
//		(2)如果条件表达式1的值为false,计算条件表达式2的值,如果为true,就执行语句体2
//		(3)如果条件表达式2的值为false,,就计算条件表达式3的值,。。。以此类推
//		(4)如果条件表达式1-条件表达式n的值都为false,就会执行else中的内容

1616849019244

Switch语句

1、switch:切换,开关
2、格式:	
	swtich(表达式){
		case 常量1:	
			语句体1;
			break;
		case 常量2:	
			语句体2;
			break;
		case 常量3:	
			语句体3;
			break;
		case 常量n:	
			语句体n;
			break;
		default:
			语句体n+1;
	}
case:情况
2、执行流程
	(1)计算表达式的值,分别和case后的各个常量进行匹配
	(2)如果和常量1匹配 ,就执行语句体1;再执行break;switch语句就结束了
	(3)如果和常量1不匹配,那么就判断和常量2是否匹配,如果匹配了,就执行语句体2,执行break,结束swtich语句
	(4)以此类推,如果常量1-常量n都没有和表达式的运算结果相匹配,那么就会执行default中的内容,遇到右大括号,结束swtich语句
import java.util.Scanner;

public class Swi {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的答案");
        String d = scanner.next();//这里只能输入大写,不然会打印default中的内容,可以利用case穿透解决
        switch (d){
            case "A":
                System.out.println("答案正确");
                break;//打断,中断,结束switch语句
            case "B":
                System.out.println("答案错了");
                break;
                case "C":
                System.out.println("答案错了");
                break;
                case "D":
                System.out.println("答案错了");
                break;
            default://如果d在case中没有相对应的常量相匹配,最终就会执行default中的内容
                System.out.println("有病?");
        }//这个其实没必要用Scanner语句,我写着玩的
////		执行流程
//			(1)计算表达式的值,分别和case后的各个常量进行匹配
//			(2)如果和常量1匹配 ,就执行语句体1;再执行break;switch语句就结束了
//			(3)如果和常量1不匹配,那么就判断和常量2是否匹配,如果匹配了,就执行语句体2,执行break,结束swtich语句
//			(4)以此类推,如果常量1-常量n都没有和表达式的运算结果相匹配,那么就会执行default中的内容,遇到右大括号,结束swtich语句
    }
}

switch语句的注意事项

1、swtich:开关,切换
	case:情况
	break:中断,打断
	default:默认
2、表达式(变量):
	类型是有要求的,一共只有六中
	jdk1.5之前:byte short,char ,int
	jdk1.5:枚举类型
	jdk1.7:String
3、case后面只能跟的是常量,不能跟变量
4、每个case后面,一定要跟上一个break语句,作用:结束swtich语句,如果在case后面,不跟break语句,那么就无法正常的结束swtich语句。会发生case穿透。case穿透的利用:多个情况是相同的逻辑,那么就可以使用case穿透完成代码的简化。
5、default语句可以放在任意的位置,都是最后进行匹配的,如果不是放在最后,一定要注意case穿透问题,加上break
default,可以写也可以不写,如果写了,swtich语句至少要执行一条语句,如果不写swtich语句就有可能一条都不执行
public class Sw2 {
	public static void main(String[] args) {
//		switch语句的注意事项
//		(1)表达式的运算结果或者变量的类型是有要求,必须是byte ,short ,char ,int,String ,枚举
//		char c = 'A';
		int i = 1;
//		long l = 2;不可以
		
		String str = "two";
		switch(str) {
//		default,可以写也可以不写
		default://default语句可以放在任意的位置,都是最后进行匹配的,如果不是放在最后,一定要注意case穿透问题,加上break
			System.out.println("没有此选项,你是学生吗");
			break;
//		case 'A':
//		case 1: 
		case "one":
//		case s:case后只能跟的是常量
			System.out.println("one");
//			break;// 如果不加break会发生case穿透,直接就执行到下个case中的语句,并不做匹配
//		case 'B':
//		case 2:
		case "two":
			System.out.println("two");
//			break;
//		case 'C':
//		case 3:
		case "three":
			System.out.println("three");
			break;
//		case 'D':
//		case 4:
		case "four":
			System.out.println("four");
			break;
		
		}
	}
}

swtich语句练习

1、键盘录入一个月份,输出这个月份对应的季节
2、春季 3,4,5 夏季 6,7,8,秋季9,10,11冬季12,1,2
package Lian;

import java.util.Scanner;

public class Sw {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入月份");
        int month = sc.nextInt();
        switch (month){
            case 3: //
            case 4:
            case 5:
                 System.out.println("春天");
                 break;
            case 6: //
            case 7:
            case 8:
                System.out.println("夏天");
                break;
            case 9: //
            case 10:
            case 11:
                System.out.println("秋天");
                break;
            case 12: //
            case 1:
            case 2:
                System.out.println("冬天");
                break;
            default:
                System.out.println("请问你生活在火星吗?");
        }
    }
}

四、循环语句

1、日常生活中
	日出日落,春夏秋冬
2、循环语句:对于某些需要重复执行的,相同的或者相似的代码,可以使用某种格式完成对这种重复代码的一种简写格式。
3、实现语句
	for语句【常用】
	while语句【常用】
	do...while语句【不常用】
1、格式:
	for(初始化语句表达式;循环条件判断表达式;初始化语句改变表达式){
		循环体语句;
	}
2、说明:
	初始化语句表达式:声明一个变量,用于记录循环的次数。 int i = 0; 
	循环条件判断表达式:控制循环的执行条件,结果也是一个boolean类型             i < 10
	初始化语句改变表达式:将初始化语句中的变量进行变化,一般是向着循环不能执行的方面进行变化。 i++;
	循环体语句:要重复循环执行的代码。
3、执行流程

image-20201013171940699

//忘记说了,千万别学我,我这些命名规则很有问题!!!!!
public class Fo {
	public static void main(String[] args) {
//		老板,让你打印十遍老板娘真漂亮
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		System.out.println("老板娘真漂亮");
//		问题:重复性太高了
//		解决:使用java中提供的循环语句
//		循环语句:对于某些需要重复执行的,相同的或者相似的代码,可以使用某种格式完成对这种重复代码的一种简写格式。
//		使用循环语句完成对重复代码的改造
		for (int i = 0; i <= 10; i++) {
//			要循环执行的代码
			System.out.println("老板娘真漂亮");
		}
	}
}

五、日常练习

1、随意定义一个两位数的变量,分别获取这个两位数上的个位数字和十位数字并输出。
	例如:
	int i = 98;
        打印结果:个位数字为:8,十位数字为:9

2、分析如下代码,写结果
	int x = 10; 
	int y = 20;
	int z = (x++) + (y++) + (--x+y);
       不运算代码,分析出 x y z的值分别是多少?

3、键盘录入一个学生的成绩,int类型的分数,根据录入的分数,输出分数的等级
[90,100] 优秀
[80,90)良好
[60,80)及格
[0,60) 不及格

4、使用循环打印1-5,和5-1
5、使用循环打印1-100之间的偶数
package Lian;

public class L1 {
    //1、随意定义一个两位数的变量,分别获取这个两位数上的个位数字和十位数字并输出。
    public static void main(String[] args) {
        int i = 23;
        int l = 32;
        System.out.println(i % 10);
        System.out.println(l / 10);
    }
}

x=10 y=20  31
import java.util.Scanner;
//键盘录入一个学生的成绩,int类型的分数,根据录入的分数,输出分数的等级
//[90,100] 优秀
//[80,90)良好
//[60,80)及格
//[0,60) 不及格
public class If3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩");
        int i =sc.nextInt();
        if (i >=90 && i <= 100 ){
            System.out.println("优秀");
        }else if (i >=81){
            System.out.println("良好");
        }else if (i >= 60){
            System.out.println("及格");
        }else if (i <= 59){
            System.out.println("不及格");
        }else {
            System.out.println("输入错误");
        }

    }
}
//4、使用循环打印1-5,和5-1
public class If3 {
    public static void main(String[] args) {
     for (int i = 1;i <= 5; i++){
         System.out.println(i);
     }
        System.out.println("------------------");
     for (int l = 5;l >=1;l--){
         System.out.println(l);
     }
    }
}
posted @ 2020-03-29 23:49  斯坦福桥保安  阅读(10)  评论(0)    收藏  举报