你的位置:首页 > Java教程

[Java教程]Java学习 (八)、静态方法,Arrays类,二维数组


一、静态方法

静态方法属于类的,可以直接使用类名.方法名()调用。

静态方法的声明

访问修饰符 static 类型 方法名(参数列表)

{

         //方法体

}

方法的作用:一个程序分解成几个方法,有利于快速调试程序,也有利于提高程序代码的利用率。因为方法是可以多次被调用的,调用次数和调用场合没有限制。

方法分类:①返回值为(空)void的方法②带具体返回类型的方法③不带参数的方法④带参数的方法

方法的返回值:如果方法中有返回值,方法中必须使用关键字return返回该值,返回值类型为该方法所定义的返回值类型。

①不带返回值的方法

 1 public class BubbleSort{ 2   public static void main(String []argas) 3   { 4     int[] array={80,53,12,90,35,22,65,45,82,33}; 5     bubble(array); 6     print(array); 7   } 8    9   //冒泡方法10   public static void bubble(int[] array)11   {12     //N个数比较的轮数为N-1次13     for(int i=0;i<array.length-1;i++)14     {15       //每一轮比较的次数为N-1-i次16       for(int j=0;j<array.length-i-1;j++)17       {18         //比较相邻的2个数,小靠前19         if(array[j]>array[j+1])20         {21           //两个数做交换,通过设置临时变量22           int temp=array[j];23           array[j]=array[j+1];24           array[j+1]=temp;25         }26       }27     }28 29   }30   31   //打印输出方法32   public static void print(int[] array)33   {34     //把排好序的数组输出35     for(int i=0;i<array.length;i++)36     {37       System.out.print(array[i]+",");38     }39   }40 }

View Code

②带返回值的方法

 1 public class BubbleSort{ 2   public static void main(String []argas) 3   { 4     int[] array={80,53,12,90,35,22,65,45,82,33}; 5     print(bubble(array)); 6   } 7    8   //冒泡方法 9   public static int [] bubble(int[] array)10   {11     //N个数比较的轮数为N-1次12     for(int i=0;i<array.length-1;i++)13     {14       //每一轮比较的次数为N-1-i次15       for(int j=0;j<array.length-i-1;j++)16       {17         //比较相邻的2个数,小靠前18         if(array[j]>array[j+1])19         {20           //两个数做交换,通过设置临时变量21           int temp=array[j];22           array[j]=array[j+1];23           array[j+1]=temp;24         }25       }26     }27     return array;28   }29   30   //打印输出方法31   public static void print(int[] array)32   {33     //把排好序的数组输出34     for(int i=0;i<array.length;i++)35     {36       System.out.print(array[i]+",");37     }38   }39 }

View Code

③方法复用及不带参数的方法

 1 public class BubbleSort{ 2   public static void main(String []argas) 3   { 4     int[] array={80,53,12,90,35,22,65,45,82,33}; 5     show1(); 6     print(array); 7     show2(); 8     print(bubble(array)); 9     10     int[] array1={80,25,12,30,35,22,55,45,82,33};    11     show1();12     print(array1);13     show2();14     print(bubble(array1));15   }16   17   public static void show1()18   {19     System.out.print("排序前:");20   }21   22   public static void show2()23   {24     System.out.print("排序后:");25   }26   27   //冒泡方法28   public static int [] bubble(int[] array)29   {30     //N个数比较的轮数为N-1次31     for(int i=0;i<array.length-1;i++)32     {33       //每一轮比较的次数为N-1-i次34       for(int j=0;j<array.length-i-1;j++)35       {36         //比较相邻的2个数,小靠前37         if(array[j]>array[j+1])38         {39           //两个数做交换,通过设置临时变量40           int temp=array[j];41           array[j]=array[j+1];42           array[j+1]=temp;43         }44       }45     }46     return array;47   }48   49   //打印输出方法50   public static void print(int[] array)51   {52     //把排好序的数组输出53     for(int i=0;i<array.length;i++)54     {55       System.out.print(array[i]+",");56     }57     System.out.println();58   }59 }

View Code

二、Arrays类

Java的jdk中提供了一个Arrays工具类,此类专门为程序员操作数组提供了很多专有方法,通过方法的调用可以对数组进行赋值,排序,比较,查找元素等功能。

在jdk的api中搜索arrays可以看到该类的用法

就举几个例子

 1 import java.util.Arrays; 2 public class ArraysUtilDemo{ 3   public static void main(String []argas) 4   { 5     int[] arraySrc1={6,8,9,16,35,90};  6     //拷贝数组 7     int[] arrayDes1=Arrays.copyOf(arraySrc1,10); 8     for(int i=0;i<arrayDes1.length;i++) 9     {10       System.out.print(arrayDes1[i]+" ");11     }12     13     System.out.println("\n**************************");14     //拷贝指定数组中的指定范围内的数据15     int[] arrayDes2=Arrays.copyOfRange(arraySrc1,2,4);16     for(int i=0;i<arrayDes2.length;i++)17     {18       System.out.print(arrayDes2[i]+" ");19     }20     21     System.out.println("\n**************************");22     int[] arraySrc2={8,6,10,16,35,90}; 23     boolean flag=Arrays.equals(arraySrc1,arraySrc2);24     System.out.print(flag);25     26     System.out.println("\n**************************");27     //数组填充28     int[] arrayDes3=new int[10];29     Arrays.fill(arrayDes3,10);30     for(int i=0;i<arrayDes3.length;i++)31     {32       System.out.print(arrayDes3[i]+" ");33     }34     35     System.out.println("\n**************************");36     //对数组进行排序37     Arrays.sort(arraySrc1);38     for(int i=0;i<arraySrc1.length;i++)39     {40       System.out.print(arraySrc1[i]+" ");41     }42     43     System.out.println("\n**************************");44     //二分法查找45     int x=Arrays.binarySearch(arraySrc1,9);46     System.out.print(x);47     48     System.out.println("\n**************************");49     //使用System类的方法来拷贝数组50     int[] arrayDes4=new int[10];51     System.arraycopy(arraySrc1,0,arrayDes4,2,5);52     for(int i=0;i<arrayDes4.length;i++)53     {54       System.out.print(arrayDes4[i]+" ");55     }56   }57 }

View Code

三、二维数组

①   可以看成以数组为元素的数组

②   Java中二维数组的声明和初始化应按照从高维到低维的顺序排列

示例

int[][] arr1=new int[10][];//第二维长度未定

int[][] arr2=new int[10][20];//第二维长度确定

☆虽然这两个数组的创建有区别,但系统为它们分配的堆内存空间大小是一样的。

对于任何类型的二维数组而言,第一维的大小决定了二维数组对象的大小,因为二维数组的成员是数组引用,数组引用本身大小是固定的。

初始化二维数组

①   静态初始化:int[][] arr={{1,2},{3,4,5},{6,7,8,9}};

②   动态初始化:

String[][] arrStr;                                       //声明

arrStr=new String[3][];                          //创建,分配内存

arrStr[0]=new String[2];                       //为高维初始化

arrStr[1]=new String[3];

arrStr[2]=new String[4];

arrStr[0][0]=new String(“abc00”);     //为低维初始化

arrStr[0][1]=new String(“abc01”);

arrStr[1][0]=new String(“abc10”);

arrStr[1][1]=new String(“abc11”);

arrStr[1][2]=new String(“abc12”);

arrStr[2][0]=new String(“abc20”);

arrStr[2][1]=new String(“abc21”);

arrStr[2][2]=new String(“abc22”);

arrStr[2][3]=new String(“abc23”);

 1 public class ArrayDemo2{ 2   public static void main(String []args){ 3     int[][] arr=new int[3][]; 4     //每个高维的数组指向一个低维的int数组 5     arr[0]=new int[2]; 6     arr[1]=new int[3]; 7     arr[2]=new int[4]; 8      9     //给低维数组进行赋值10     arr[0][0]=1;11     arr[0][1]=2;12     arr[1][0]=3;13     arr[1][1]=4;14     arr[1][2]=5;15     arr[2][0]=6;16     arr[2][1]=7;17     arr[2][2]=8;18     arr[2][3]=9;19     20     for(int i=0;i<arr.length;i++)21     {22       for(int j=0;j<arr[i].length;j++)23       {24         System.out.print(arr[i][j]);25       }26       System.out.println();27     }28   }29 }

View Code