Java底层知识:break和continue的区别,方法的定义,方法的重载,递归,斐波拉契数列,数组,数组的定义,数组的赋值,数组的正向与逆向遍历,查找元素是否在数组中,数组的最值问题,二维数组。

 1.break和continue的区别:

 break  :

       [1]switch中使用,作用跳出switch结构,停止贯穿

       [2]循环结构中,  作用,退出循环结构

 continue:

      只能用在循环里 ,作用,结束当前循环,进入下一次循环

      在while,do-while中跳转到条件判断处,在for中跳转到i++处

demo1;continue与break在二重循环中,只作用于本层循环

import java.util.Scanner;

public class TestCircle{

       public static void main(String [] args){

               Scanner input=new Scanner(System.in);

               String answer="y";

                while(true){

                        for(int i=0;i<3;i++){

                               System.out.println("请输入用户名:");

                               String userName=input.next();

                               System.out.println("请输入密码:");

                               String pwd=input.next();

                               /*if("admin".equals(userName)&&"admin".equals(pwd)){

                                       System.out.println("登录成功!");

                                        break;   //在for中,作用是退出for

                               }

                               System.out.println("用户名或密码不正确,请重新录入!");

                               */

                               if(!"admin".equals(userName)||!"admin".equals(pwd)){

                                       System.out.println("用户名或密码不正确,请重新录入!");

                                        continue;

                               }

                               System.out.println("登录成功!");

                                break;

                       

                        }

                       System.out.println("继续吗?y/n");

                       answer=input.next();

                       if(!"y".equals(answer)){

                                break; //在while中,作用是退出while

                       }

               }

               

       }

}

demo2: 带标签的continue与break;  作用于标签处

import java.util.Scanner;

public class TestCircle2{

       public static void main(String [] args){

               Scanner input=new Scanner(System.in);

               String answer="y";

                a: while(true){

                       for(int i=0;i<3;i++){

                               System.out.println("请输入用户名:");

                               String userName=input.next();

                               System.out.println("请输入密码:");

                               String pwd=input.next();

                               /*if("admin".equals(userName)&&"admin".equals(pwd)){

                                       System.out.println("登录成功!");

                                       break;   //在for中,作用是退出for

                               }

                               System.out.println("用户名或密码不正确,请重新录入!");

                               */

                               if(!"admin".equals(userName)||!"admin".equals(pwd)){

                                       System.out.println("用户名或密码不正确,请重新录入!");

                                        continue a;

                               }

                               System.out.println("登录成功!");

                                break a;

                       

                        }

                       /*System.out.println("继续吗?y/n");

                       answer=input.next();

                       if(!"y".equals(answer)){

                               break; //在while中,作用是退出while

                       }*/

                }
               
       }

}

2.方法

  用于完成一个独立的小功能的一段代码,只有被调用时才执行  ,而且可以被反复调用

 方法的定义

      [1]明确方法是否会有不确定的因素,不确定的因素作为形式参数

      [2]明确方法的运行结束之后是否会有结果,如果有结果,结果应该是什么类型?这个类型作为方法的返回值

 方法的调用

   [1]负责提供实际参数

    [2]负责处理结果

public class TestSystem{

       public static void main(String [] args){

               System.out. println ("hello");  //String

               System.out. println (true);   //boolean

               System.out. println (89);    //int

               System.out. println ('c');   //char

               System.out. println (90.8);   //double

       }

}

public class Calc {

       

       public static int add ( int a,int b ){

               System.out.println("亲,这里在执行加法运算");

               return a+b;

       }

       

       public static double add ( double a,double b ){

               return a+b;

       }

       

       public static double add ( int a,double b ){

               return a+b;

       }

}

3.方法的重载

 (1)在同一个类中

 (2)方法的名称相同

 (3)参数的列表不同(参数的个数,类型,顺序不同)

 (4)与返回值类型和访问权限修饰符无关

 */

       public static int add(int a,int b){

               

               return a+b;

       }

       public static void add(int a,int b){

               System.out.println(a+b);

       }

       public static void add(int a,int b,int c){

               System.out.println(a+b+c);

       }

       

       public static double add(int c ,int d){

               return c+d;

       }

       public static double add(int a,double b){

               return a+b;

       }

       public static double add(double a,double b){

               return a+b;

       }

        static double add(double a,double b){

               return a+b;

       }

       public static int add1(int a,int b){

               

               return a+b;

       }

}

4.递归

 递归:就是自己调用自己

 递归的前提条件:方法定义与调用

public class Recu{

        public static   int plus ( int number){

                if(number==1){  //结束条件

                       return 1;  //结束时的结果是什么

               } else{  //自己调用自己

                       return  plus(number-1)+number;

               }

       }

       public static int plus2(int number){

               int sum=0;

               for(int i=1;i<=number;i++){

                       sum+=i;

               }

               return sum;

       }

       

       public static void main(String [] args){

               System.out.println(plus(5));

               System.out.println(plus(10));

               System.out.println(plus(100));

               System.out.println("----------------------------------\n");

               System.out.println(plus2(5));

               System.out.println(plus2(10));

               System.out.println(plus2(100));

       }

}

斐波拉契数列

public class Bonacci{               

       public static int bonacci(int index){

                if(index==1||index==2) {  //结束时的值

                   //结束时的结果是什么

                       return 1;

                }else{

                   //自己调用自己

                        return bonacci(index-1)+bonacci(index-2);

               }    

       }

       public static void main(String [] args){

                       //System.out.println(bonacci(12));

                        for(int i=1;i<=12;i++){

                               System.out.print(bonacci(i)+"\t");

                        }

       }

}

数组:

存储一组相同类型的有序数据

下标:从0开始,标识的是数据(元素)的位置

数组实际上也是一个变量,在内存中划出 一串连续 的空间

 最大下标+1=数组中元素的个数(数组的长度)

 数组的最大下标=数组的长度-1;

数组的使用: (4步)

 [1]声明数组   数组类型[] 数组名;   int []  array;  -->栈内存进行的

 [2](开辟)分配空间     数组名=new int [10];         -->堆内存进行的

 [3]赋值                   数组名[0]=9;                 -->堆内存

 [4]使用                syto(数组名[0]);

public class TestArray{

       public static void main(String [] args){

                int [] array=null;  //[1]声明数组

                 //将在堆内存中开辟的空间地址(复制一份)赋值给变量array

                array=new int[10]; // [2]在堆内存开辟空间10个,用于存储10个整型数据

               //[3]给数组中的元素赋值

                array[0]=9;
               

               //[4]将数组中的第一个元素打印输出

               System.out.println( array[0] );       

       }

}

数组的静态赋值:

public class TestArray2{

       public static void main(String [] args){

                int  score[]={89,87,98};  //静态赋值

               /*int [] score1;

               score1={89,87,98}; 静态赋值,没有使用关键字new,则声明并赋值,必须在一行完成*/  

                int [] array=new int[]{98,34,45,3,4};

                int [] array2;

               array2=new int[]{98,34,45,3,4};               
               System.out.println(array2);   

       }
}

数组的动态赋值:

 int [] score = new int [5];   // 声明并分配空间

               

                for ( int i =0; i <5; i ++){

                       System. out .println( " 请输入第 " +( i +1)+ " 个学生的成绩 " );

                        score[i] = input .nextInt();

                        // int s=input.nextInt();

               }

数组的正向遍历和逆向遍历:

    正向遍历

         public static void print(int [] array){

               for(int i=0;i<array.length;i++){

                       System.out.print(array[i]+"\t");

               }

               System.out.println("\n");

               for(int num:array){

                       System.out.print(num+"\t");

               }    }

    逆向遍历

 public static void Rprint(int [] arr1){

               for(int i= arr1.length-1 ;i>=0; i-- ){

                       System.out.print(arr1[i]+"\t");           

               }

       }

查找一个值在数组中是否存在:

       public static boolean search(int number,int []arr){

               for(int num:arr){

                       if(num==number){

                                return true;
                       }
               }
                return false;
       }

数组中的最值问题:

  public static int getMax(int []arr){

               int max=arr[0];//将数组中索引为0的元素赋给最值

               for(int i=1;i<arr.length;i++){

                       //判断

                       if(arr[i]>max){

                               max=arr[i];
                       }
               }
               return max;
       }

二维数组:

二维数组存储是实际上是一维数组的内存地址,而且存储的一维数据的长度可以不相同。

public class TestArray {

        public static void main(String [] args ){

                int [] arr1 ={12,34,45}; // 一维数组

                int [] arr2 = new int []{43,45}; // 一维数组

                int [] arr3 ={65,67,85,98}; // 一维数组

                // 把以上三个一维数组,放到一个数组中储

                // 数据类型  [] 数组名称 =new 数据类型 [ 长度 ];

               

               System. out .println( "arr1=" + arr1 + "\tarr2=" + arr2 + "\tarr3=" + arr3 );

               

                int [] []  array=new int[3][];// 存储数组的数组,二维数组

               System. out .println( "\n 赋值之前二维数组中的数据 " );

                for ( int i =0; i < array . length ; i ++){

                       System. out .print( array [ i ]+ "\t" );

               }

                // 二维数组中存储的是三个一维数组的内存地址

                array[0]=arr1;

               array[1]=arr2;

               array[2]=arr3;

               System. out .println( "\n 赋值之后二维数组中的数据 " );

                for ( int i =0; i < array . length ; i ++){

                       System. out .print( array [ i ]+ "\t" );

               }

                 

               System. out .println( "\n 二维数组的遍历 " );

                for ( int i =0; i < array . length ; i ++){ // 二维数组的长度

                        for ( int j =0; j < array[i].length ; j ++){   // 每个一维数组的长度

                               System. out .print( array[i][j] + "\t" );

                       }

                       System. out .println();

               

               }

               System. out .println( "\n 使用加强 for 循环 " );

                for ( int [] arrayB : array ){   // 二维数组中所存储的数据类型是一维数组 int []

                        for ( int num : arrayB ){   // 一维数组中存储的数据类型是 int

                               System. out .print( num + "\t" );

                       }

                       System. out .println();              

               }              

       }

}

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/81834935