• java学习第04天(语句、函数、数组)


    (3)循环结构

    格式:

    for(初始化表达式,循环条件表达式,循环后的操作变大时){
       执行语句,循环体;
    }

    注:

    a. for循环里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

    b. while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。

    c. 最简单无限循环格式,while(true),for(),无线循环存在的原因是并不知道循环多少次,二十根据某些条件,来控制循环。

    注意:

    /*
          
    :回车
          	:制表符
          :退格
          
    :按下回车键
          window系统中回车符其实是由两个符号组成的
    
          linux中回车符是
    
          */
    //练习题1:
    class  forDemo
    {
       public static void main(String[] args)
       {
          //大全套小圈思想
          for(int x=0; x<3;x++){//外循环控制的是行数
            for(int y=0; y<4;y++){//内循环控制的是每一行的个数
               System.out.print("*");
            } 
            System.out.println();
          }    
       }
    }
    
    /*输出结果:
    ****
    ****
    ****
    */
     

    练习题2

    class  forDemo
    {
       public static void main(String[] args)
       {
          for(int x=0; x<5;x++){
            for(int y=5-x; y>0;y--){
               System.out.print("*");
            } 
            System.out.println();
          }    
       }
    }

    运行结果:

    *****

    ****

    ***

    **

    *

    练习题3:

    class  forDemo
    {
       public static void main(String[] args)
       {
          for(int x=0; x<6;x++){
            for(int y=0; y<x;y++){
               System.out.print("*");
            } 
            System.out.println();
          }    
       }
    }

    运行结果:

    *

    **

    ***

    ****

    *****

    例题4:

    class  forDemo
    {
       public static void main(String[] args)
       {
          for(int x=1; x<=9;x++){
            for(int y=1; y<=x;y++){
               System.out.print(x+"*"+y+"="+x*y+"	");
            } 
            System.out.print("
    ");
          }    
       }
    }

    运行结果:

    乘法口诀

    联系5:

    class  forDemo
    {
       public static void main(String[] args)
       {
          for(int x=1; x<=6;x++){
            for(int z=0; z<x-1;z++){
               System.out.print(" ");
            }
            for(int y=6-x; y>0;y--){
               System.out.print("* ");
            } 
            System.out.print("
    ");
          }    
       }
    }

    运行结果:

    /*

          * * * * *

           * * * *

            * * *

             * *

              *

          */

    (4)其他流程控制语句

    break(跳出),continue(继续)

    break语句:应用范围:选择结构和循环结构。

    例题:

    class  forDemo
    {
       public static void main(String[] args)
       {
          /*
          break:跳出。
          break作用的范围,要么是switch语句,要么是循环语句。
          记住:当break语句单独存在是,下面不要定义其他语句,因为执行不到。
            break跳出当前所在的循环
            如果出现了循环嵌套,break想要跳出指定的循环可以通过标号来完成。
          */ 
          xiaoqiang:for(int x=0;x<3;x++)
          {
            wangcai:for(int y=0;y<4;y++)
            {               
               System.out.print("x="+x);
               break xiaoqiang;          
            }       
          }    
       }
    }

    continue语句:应用于循环结构

    例题:

    class  forDemo
    {
       public static void main(String[] args)
       { 
          /*
          continue:继续
          作用的范围:循环结构。
          continue:解除本次循环,继续下次循环。
          如果continue单独存在时,下面不要有任何语句,因为执行不到。
    
          for(int x=0;x<11;x++){
            if(x%2 == 0)
               continue;
            System.out.println("x="+x);      
          }*/
          xiaoqiang:for(int x=0;x<3;x++)
          {
            wangcai:for(int y=0;y<4;y++)
            {               
               System.out.println("x="+x);
               continue xiaoqiang;          
            }       
          }     
       }
    } 

    注:

    a. 这两个语句离开应用范围,存在是没有意义的。

    b. 这两个语句单独存在下面都不可以有语句,因为执行不到。

    c. continue语句是结束本次循环继续下次循环。

    d. 标号的出现,可以让这两个语句作用于指定的位置。

    7.函数

    (1)函数的定义

    什么是函数:

       函数就是定义在类中的具有特定功能的一段独立小程序。

       函数也称为方法。

    函数的格式:

       修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…………){

       执行语句;

    return 返回值;

    特殊情况:

    功能没有具体的返回值

    这时return的后面直接用分号结束。

    返回值类型怎么处理呢?因为没有具体值,所以不可以写具体的数据类型。在java中只能用一个关键字来表示这种情况。关键字:void。

    总结:没有具体返回值时,返回值类型用void来表示。

    注意:如果返回值类型是void的话,那么函数中的return语句可以忽略不谢。

    返回值类型:函数运营后的结果的数据类型。

    参数类型:是形式参数的数据类型。

    形式参数:是一个变量,用于储存调用函数时传递给函数的实际参数。

    return:用于结束函数。

    返回值:该函数运算结束后的结果,该结果会返回给调用者。

    例题:

    class FunctionDemo
    {
       public static void main(String[] args)
       {
          /*int a = 3;
          int b = 4;
          int c;
          c = a+b;
          */
          int c = add(3,4);//调用的函数也需要是static的,所以add方法前面加static
          System.out.println("c="+c);
       }
       public static int add(int a,int b)
       {
          return a+b;
       }
    }

    (2)函数的特点

    a.定义函数可以将功能代码进行封装

    b.便于对该功能进行复用

    c.函数只有被调用才会被执行

    d.函数的出现提高了代码的复用性

    e.对于函数没有具体返回值的清凉,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

    f.注意:

    函数只能调用函数,不可以在函数内部定义函数。

    定义函数时,函数的结果应该返回给调用者,交由调用者处理。

    (3)函数的应用

    class FunctionDemo
    {
       public static void main(String[] args)
       {
          //int sum = jiaFa(5,10);
          //System.out.println(sum);
          //draw(4,6);
          //print99();
          getLevel(95);
       }
       /*
       需求1:定义一个功能,完成两个整数的和的获取。
       思路:既然定义功能,就是可以用函数来体现
          如何定义一个函数呢?
          通过两个明确来完成
       明确一:这个功能的结果是什么?是和。所以该功能的返回值类型是int。
       明确二:这个功能实现过程中是否需要未知内容参与计算?有,加数与被加数。这就是函数的参数列表(参数的个数   参数类型)。
       其实就是在明确参数列表 
       注意点:返回值类型和参数类型没有直接关系。
       */
       public static int jiaFa(int a,int b)
       {
          int sum = a+b;
          return sum;
       }
     
       /*
       需求2:定义一个功能,画一个矩形在控制台。
       明确一:这个功能的结果是什么?
            没有结果,因为直接打印到控制台,并未返回给调用者,用void表示。
       明确二:这个功能实现过程中是否需要未知内容参与计算?
            有,行和列不确定。两个,整数 int。
       */
       public static void draw(int row,int col)
       {
          for(int x=1;x<=row;x++)
          {
            for(int y=1;y<=col;y++)
            {
               System.out.print("*");
            }
            System.out.println();
          }
          //return;//可以省略不写
       }
     
       /*
       需求3:定义一个功能,比较两个数是否相等。
       明确一:这个功能的结果是什么?
            有,boolean。
       明确二:这个功能实现过程中是否需要未知内容参与计算?
            有,两个整数。
       */
     
       public static boolean equals(int a,int b)
       {
          /*if(a == b)
            return true;
          else
            return false; 
          return a==b? true:false;//三元运算符
          */
          return a==b;
       } 
    
       /*
       需求4:定义一个功能,获取两个整数中较大的那个数。
       明确一:这个功能的结果是什么?
            有,其中一个数 int
       明确二:这个功能实现过程中是否需要未知内容参与计算?
            有,参与比较的两个整数 int。
       */  
    
       public static int getMax(int a,int b)
       {
          /*if(a>b)
            return a;
          else
            return b;*/
          return a>b? a:b;
       }
    
       /*
       需求5:定义一个功能,打印99乘法表。
       明确一:这个功能的结果是什么?
            没有结果,因为直接打印到控制台,并未返回给调用者,用void表示。
       明确二:这个功能实现过程中是否需要未知内容参与计算?
            有,行和列不确定。两个,整数 int。
       */
    
       public static void print99()
       {
       for(int x=1;x<=9;x++)
          {
            for(int y=1;y<=x;y++)
            {
               System.out.print(y+"*"+x+"="+x*y+" " );
            }
            System.out.println();
          }
       } 
    
       /*
       需求6:根据考试成绩获取学生分数对应的登记
       99~100  A
       80~89 B
       70~79 C
       60~69 D
       60以下  E
    
       明确一:这个功能的结果是什么?
            有,返回等级,字符,char
       明确二:这个功能实现过程中是否需要未知内容参与计算?
            有,分数 int。
       */
    
       public static char getLevel(int nums)
       {
          char level;
          if(nums >=90 && nums <=100)
            level = 'A';
          else if(nums >=80 && nums <=89)
            level = 'B';
          else if(nums >=70 && nums <=79)
            level = 'C';
          else if(nums >=60 && nums <=69)
            level = 'D';
          else
            level = 'E';
          return level;   
       }
    }

    (4)函数的重载

    重载概念:

       在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。

    重载的特点:

       与返回值类型无关,只看参数列表。

    重载的好处:

       方便与阅读,优化了设计程序。

    重载示例:

       

    //返回两个整数的和
    int add(int x,int y){return x+y;}
    //返回三个整数的和
    int add(int x,int y, int z){return x+y+z;}
    //返回两个小数的和
    double add(double x,double y){return x+y;}
    /*
    需求:函数的重载
    */
    
    class  FunctionDemo4
    {
       public static void main(String[] args)
       {
          //add(4,5);//找第一个add方法
          //add(4.2,5.9);//找第二个add方法
          //add(4,5,10);//找第三个add方法
          printCFB(15);
          //System.out.println("Hello World!");
       }
       /*

       函数的要求:

       1.同一个类

       2.同名

       3.参数个数不同,or参数类型不同

       4.函数的重载和返回值类型无关

       5.java是严谨性计,如果函数出现的调用不确定性,会编译失败。

      

     */
    
       //加法运算,两个整数的和。
       public static int add(int a,int b)
       {
          return a+b;
       }  
    
       //加法运算,两个小数的和。
       public static double add(double a,double b)
       {
          return a+b;
       }
    
       //加法运算,三个整数的和。
       public static int add(int a,int b, int c)
       {
          return a+b+c;
       }
    
       /*
       打印乘法表
       */
       public static void printCFB(int num)
       {
          for(int x=1;x<=num;x++)
          {
            for(int y=1;y<=x;y++)
            {
               System.out.print(y+"*"+x+"="+x*y+" " );
            }
            System.out.println();
          }
       } 
    
       /*
       打印标准乘法表
       */
       public static void printCFB()
       {
          printCFB(9);
       }
    }

    8.数组

    (1)数组的定义

    概念:

    同一种类型数据的集合,其实数组就是一个容器。

    数组的好处:

       可以自动给数组中的元素从0开始编号,方便操作这些元素。

    格式1:

       元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

       示例:int[] arr = new int[5];

    格式2:

       元素类型[] 数组名 = new 元素类型(元素,元素,元素……);

       int[] arr = new []{3,5,1,7};

       int[] arr = {3,5,1,7}

    (2)数组的内存分配及特点

    class ArrayDemo
    {
       public static void main(String[] args)
       {
          //元素类型[] 数组名 = new 元素类型{元素个数或者数组长度}
          {//局部代码块,限定局部变量的生命周期。
            int age = 3;
          } 
          int[] arr = new int[3];//基本定义格式
          arr[0] = 89;
          System.out.println(arr[0]);
       }
    }
    /*
    内存的划分:
    1.寄存器
    2.本地方法区(所在系统相关的)
    3.方法区
    4.栈内存
       存储的都是局部变量。
       而且变量所属的作用域一旦结束,该变量就自动释放。
    5.堆内存
       堆存储的是数组和对象(其实数组就是对象),凡是new建立的都在堆中。
       特点:
       1.每一个实体都有首地址值。
       2.堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同,数值是0,小数0.0或者0.0f,boolean false,char 'u0000'。
       3.垃圾回收机制。(自动回收)
    
    */

    (3)数组操作常见问题

    class ArrayDemo2
    {
       public static void main(String[] args)
       {
          int[] arr = new int[3];
          //System.out.println(arr[3]);
          //ArrayIndexOutOfBoundsException
          //当访问到数组中不存在的角标时;就会发生该异常。     
          //arr = null;
          //System.out.println(arr[0]);
          //NullPointerException
          //当引用型变量没有任何实体指向时,还在用其操作实体,就会发生该异常。 
          System.out.println(arr);//直接输出数组,[I@15db9742
       }
    }

    (4)数组常见操作

    (5)数组中的数组

    视频教程地址:https://chuanke.baidu.com/v1867921-123914-300154.html

  • 相关阅读:
    [nginx]简单内容管理系统的spring项目的nginx.conf配置文件的注释理解
    [日常填坑]部署使用Idea开发的spring框架的多模块项目到服务器
    [日常填坑]centos7.0+版本服务器安装jdk9或者jdk10
    [日常填坑]centos7.0+版本服务器安装mysql
    机器学习实战之kNN算法
    机器学习实战之机器学习主要任务
    模式字符串匹配问题(KMP算法)
    ubuntu 更新引导命令
    ubuntu 14.04 中找不到 libgtk-x11-2.0.so
    maven project 更新总是jre-1.5
  • 原文地址:https://www.cnblogs.com/Strive-count/p/9173933.html
Copyright © 2020-2023  润新知