Java基础 语法篇

目录

1:键盘录入(掌握)
2:流程控制语句
3:if语句(掌握)
4:switch语句(掌握)
5:循环语句(掌握)
6:控制跳转语句(掌握)

1:键盘录入(掌握)

  1. 实际开发中,数据是变化的,为了提高程序的灵活性,我们加入键盘录入数据。

  2. 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。

  3. 具体实现:

    A:导包
    	import java.util.Scanner;
    	位置:在class的上边
    B:创建对象
    	Scanner sc = new Scanner(System.in);
    C:获取数据
    	int x = sc.nextInt();
    
    import java.util.Scanner;
    publlic class Demo{
        public static void main(String[] args){
            //创建一个扫描器对象,用于接收键盘数据
            Scanner sc = new Scanner(System.in);
            
             System.out.println("请输入内容:");
            //判断用户有没有输入字符串,  也可以不要这个if判断
            if(sc.hasnext()){
                //使用next方式接收
                String str = sc.next();
                System.out.println("输出的内容为:"+str);
            }
            //凡是属于IO流的类,如果不关闭会一直占着资源 
            sc.close(); 
        }
    }
    
  4. 案例:可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果

    import java.util.Scanner;
    public class Demo{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
           
            double sum = 0;    //和
            int m = 0;       //计算输入了多少数字
            //通过循环判断是否还有输入,并在里面对每一次进行求和统计
            while(sc.hasNextDouble()){   //统一的方法还有很多,这个是判断输入的是否为double类型
                double x = sc.nextDouble(); //这个变量x也可以定义在外面
                m = m + 1;  //m++;
                sum = sum + x;
            }
            System.out.println(m+"个数的和为"+sum);
            System.out.println(m+"个数的平均值为"+(sum/m));
            
            sc.close();
        }
    }
    
    1. 拓展

      //随机数获取公式 :[a,b]
      (int)Math.random()*(b-a+1)+a
      //例如:获取一个随机数:10-99
          (int)(Math.random()*90+10);  //[0.0,1.0)-->[0.0,90.0)-->[10.0,100.0)
      

2:流程控制语句

  1. 顺序结构 从上往下,依次执行
  2. 选择结构 按照不同的选择,执行不同的代码
  3. 循环结构 做一些重复的代码

3:if语句(掌握)

  1. 三种格式

    A:格式1
    	if(比较表达式) {
    		语句体;
    	}
    
        执行流程:
            判断比较表达式的值,看是true还是false
            如果是true,就执行语句体
            如果是false,就不执行语句体
    B:格式2
    	if(比较表达式) {
    		语句体1;
    	}else {
    		语句体2;
    	}
    		
    	执行流程:
            判断比较表达式的值,看是true还是false
            如果是true,就执行语句体1
            如果是false,就执行语句体2
    C:格式3
    	if(比较表达式1) {
    		语句体1;
    	}else if(比较表达式2){
    		语句体2;
    	}
    	...
    	else {
    		语句体n+1;
    	}
    		
    	执行流程:
            判断比较表达式1的值,看是true还是false
            如果是true,就执行语句体1
            如果是false,就继续判断比较表达式2的值,看是true还是false
            如果是true,就执行语句体2
            如果是false,就继续判断比较表达式3的值,看是true还是false
            ...
            如果都不满足,就执行语句体n+1
    
  2. 注意事项

    A:比较表达式无论简单还是复杂,结果是boolean类型
    B:if语句控制的语句体如果是一条语句,是可以省略大括号的;如果是多条,不能省略。
         建议:**永远不要省略。**
    C:一般来说,有左大括号,就没有分号,有分号,就没有左大括号。
    D:else后面如果没有if,是不会出现比较表达式的。
    E:三种if语句其实都是一个语句,只要有一个执行,其他的就不再执行。
    
  3. 案例

    A:比较两个数是否相等
    B:获取两个数中的最大值
    C:获取三个数中的最大值(if语句的嵌套)
    D:根据成绩输出对应的等级
    E:根据月份,输出对应的季节
    F:根据x计算对应y的值并输出

  4. 三元运算符和if语句第二种格式的关系

    所有的三元运算符能够实现的,if语句的第二种格式都能实现。
    反之不成立。

    如果if语句第二种格式控制的语句体是输出语句,就不可以。
    因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。

4:switch语句(掌握)

  1. 格式

    switch(表达式) {
        case 值1:
          语句体1;
          break;
        case 值2:
          语句体2;
          break;
        ...
        default:
          语句体n+1;
          break;
    }
    
    格式解释说明:
        switch:说明这是switch语句。
        表达式:可以是byte,short,int,char
           JDK5以后可以是枚举
           JDK7以后可以是字符串
        case:后面的值就是要和表达式进行比较的值
        break:表示程序到这里中断,跳出switch语句
        default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
    
  2. 面试题

  3. 执行流程:

  4. 注意事项:

  5. 案例:

 //1、使用switch把小写类型的char转换为大写,只转换a,b,c,d,其他的输出“other”
 
 //提示:
     String wrod = sc.next();  //之所以这样是因为Scanner没有输入char的方法啊,所以先转换为String
 	char c = word.charAt(0);  //再用charAt()获取
 	switch(c){}
 
 
 //2、对学生成绩大于60分的输出“合格”,低于60分的输出“不合格”
 //只能用switch语句的情况下,会出现大量重复的句子,所以考虑求模 %,减少情况,再因为只输出两种所以考虑合并
 int s = 78;
 switch(s%10){
     case 0:
     case 1:
         ...
     case 5:
         System.out.println("不合格");
         break;
     case 6:
         ...
 }
 
 //3、从键盘输入“month”和“day”,要求通过程序输出输入的日期为当年的第几天
 //思路:第三个月第十天,是一月份加二月份加上天数,所以可以用switch累加月份
 int sumDays = 0;
 switch(month){
     case 12:
         sumDays += 30;
     case 11:
         sumDays += 31;
     case 10:
         sumDays += 30;
     case 9:
         sumDays += 31;
     case 8:
         sumDays += 31;
     case 7:
         sumDays += 30;
     case 6:
         sumDays += 31;
     case 5:
         sumDays += 30;
     case 4:
         sumDays += 31;
     case 3:
         sumDays += 28;
     case 2:
         sumDays += 31;
     case 1:
         sumDays += day;
 }
 System.out.println(month+"月"+day+"日是当年的弟"+sumDays+"天");
  1. if语句和switch语句各自的场景

5:循环语句(掌握)

  1. 有三种:for,while,do...while

  2. for循环语句

    for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

    循环执行次数是在执行之前就确定的

    for(初始化;布尔表达式;迭代){
        //循环体
    }
    
    int a = 1; //初始化条件
    
    while(a<100){  //条件判断
        System.out.println(a);  //循环体
        a+=2; //迭代    a = a + 2;
    }
    System.out.println("while循环结束");
    
      //初始化 //条件判断 //迭代
    for(int i = 1;i<=100;i++){       IDEA快捷键:100.for  生成 for(int i = 1;i<=100;i++)
        System.out.println(i);
    }
    
    /*
    关于for循环有以下几点说明
    最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
    然后,检测布尔表达式的值。如果为true,循环体被执行。如果为aLse,新环终止,开始执行循环体后面的语句
    执行一次循环后,更新循环控制变量(送代因子控制循环变量的增减)。
    再次检测布尔表达式。循环执行上面的过程。
    */
    //即初始化可以去掉,条件判断可以去掉,迭代可以去掉
    for(; ;){}    //死循环
    
    //练习1:计算0到100之间的技术和偶数的和
    int oddSum = 0;
    int evenSum = 0;
    
    for(int i = 0; i < 100; i++){
        if(i%2 != 0){
            oddSum += i;
        }else{
            evenSum += i;
        }
        System.out.println("奇数的和:"+oddSum);
        System.out.println("偶数的和:"+evenSum);
    }
    
    //练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
    for(int i = 0; i <= 1000; i++){
        if(i%5==0){
            System.out.print(i+"\t");
        }
        if(i%(5*3)==0){  //换行
            System.out.println();
            //System.out.print("\n");
        }
        //println 输出完会换行
        //print 输出完不会换行
    }
    
    //练习3:打印99乘法表
    for(int i = 1; i <=9; i++){
        for(int j = 1; j <= i; j++){
            System.out.print(i+"*"+j+"="+(i*j) + "\t");
        }
        System.out.println();
    }
    
  3. while循环

    while(布尔表达式){
        //循环体
    }
    //如果不满足条件,则while不能进入循环
    
  4. do...while循环

    //do...while循环和while循环,不同的是,do...while循环 至少会执行一次
    do{
        //循环体
    }while(布尔表达式)
    

    while和do...while的区别:

    • while先判断后执行。do...while是先执行后判断
    • do...while总是保证循环体会被至少执行一次
  5. 循环使用的注意事项(死循环)

  6. 增强for循环

    //Java5引入了一种主要用于数组或者集合的增强for循环
    //格式
    for(声明语句 : 表达式){
        //循环体
    }
    
    //声明语句:声明新的局部变量,该变量的类型必须和数组元素有类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等
    //表达式:表达式是要访问的数组名,或者是返回值为数组的方法
    
    int[] numbers = {10,20,30,40,50};  //定义一个数组
    //遍历数组的元素
    for(int x : numbers){
        System.out.print(x+",");    //结果:10,20,30,40,50
    }
    

6:控制跳转语句(掌握)

  1. break:中断的意思

    • 用在循环和switch语句中,离开此应用场景无意义。

    • 作用

      a:跳出单层循环

      b:跳出多层循环,需要标签语句的配合

      c:break用于强行退出循环

  2. continue:继续

    • 用在循环中,离开此应用场景无意义。

    • 作用 :跳出单层循环的一次,可以继续下一次,用于终止某次循环过程

    • 填空题

      for(int x=1; x<=10; x++) {
          if(x%3 == 0) {
              //补齐代码
          }
          System.out.println("Java基础班");
      }
      如何让控制台输出2次:Java基础班
      如何让控制台输出7次:Java基础班
      如何让控制台输出13次:Java基础班
      
  3. return:返回

    • 用于结束方法的,后面继续补充
    • 一旦遇到return,程序就不会在继续往后执行。
  4. 跳出多层循环

    要想实现这个效果,就必须知道一个东西。带标签的语句。类似于goto关键字(goto在Java中并没有使用)

    对于Java来说唯一用到标签的地方是在循环语句之前

    格式:
    标签名: 语句

    wc:for(int x=0; x<3; x++) {
        nc:for(int y=0; y<4; y++) {
            if(y == 2) {
                //break nc;
                break wc;
            }
            System.out.print("*");
        }
        System.out.println();
    }
    
  5. 练习(掌握)

    //答应三角形  5行
    for(int i = 1; i <= 5; i++){
        for(int j = 5; j >= i; j--){
            System.out.print(" ");
        }
        for(int j = 1; j <= i; j++){  //打印三角形左侧
            System.out.print("*");
        }
        for(int j = 1; j < i; j++){
            System.out.print("*");
        }
        System.out.println();
    }
    
posted @ 2021-07-25 16:38  野绅士  阅读(99)  评论(0)    收藏  举报