java --- 第二节课:数组、方法

45 阅读6分钟

数组

数组的基础知识

1.什么是数组:数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素,数组是一种将一组数据存储在单个变量名下的优雅方式。

2.数组的作用:用来存储固定大小的同类型元素

3.数组的特点

       (1)数组的长度一旦初始化,长度就固定了,不能改变

       (2)数组容器中既可以存储基本数据类型,也可以存储引用数据类型

       (3)一个数组容器中的所有元素的数据类型必须是相同的

4.数组的定义格式:

格式一:

  元素的数据类型[]    数组名称  =  new  元素的数据类型[元素的个数(数组的长度)]

  eg: int[]  arr  = new  int[10];

格式二:

  元素的数据类型[]    数组名称   =   new   元素的数据类型[]{元素1,元素2,元素3,……};

  eg:int[]  arr  =   new   int[]{12,13,45};

格式三:

  元素的数据类型[]   数组的名字  =   {元素1,元素2,元素3,……};

  eg:int[]   arr   =  {12,13,45};

5.数组的初始化:

  存数据格式:数组名[索引] = 数据;

  索引:就是编号,从0开始编号,依次往后,最大的编号是容器的长度-1

       eg:int[]  arr  =  new   int[3];

           arr[0] = 12;

           arr[1] = 2;

6.读取数组数据:

       格式:数组名[索引];

7.遍历数组

数组名.length:获取数组容器的长度

int[] arr = new int[]{12,13,45};

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

    int a = arr[i]; 

    System.out.println(a);

}

数组的内存图:

eg:

    int[]  arr  =  new   int[3];

    arr[0]  =  12;

    arr[2]  =  14;

    System.out.println(arr[0]);//12

    System.out.println(arr[1]);//0

    System.out.println(arr[2]);//14

    System.out.println(arr);  //0x001

  image.png

数组常报的错误

  1. ArrayIndexOutOfBoundsException(数组索引越界异常)
int arr = {12,13,45};

System.out.println(arr[3]);//报错

NullPointerException(空指针异常)

int arr = {12,13,45};

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

arr = null;

System.out.println(arr[0]);//报错

注意:null是空常量,只能赋值给引用数据类型的变量

数组的常见操作

1.遍历输出所有的元素

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

       System.out.println(arr[i]);

}

2.获取最大值,最小值

Way-1:

int[] arr = {3,4,5,2,1,9,0,12};

int max = arr[0];

int min = arr[0];

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

       if(max < arr[i]){

              max = arr[i];

        }

        if(min > arr[i]){

               min = arr[i];

        }

}

System.out.println(max,min);

Way-2:

int[] arr = {3,4,5,2,1,9,0,12};

int max = 0;

int min = 0;

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

       if(arr[max] < arr[i]){

              max = i;

        }

        if(arr[min] > arr[i]){

               min = I;

        }

}

System.out.println(arr[max],arr[min]);

3.基本查找操作

int[] arr = {23,45,12,567,78434,323,567,0};

Scanner sc = new Scanner(System.in);

System.out.println(“请您输入一个数字”);

int num = sc.nextInt();

boolean b = false;

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

       if(arr[i] == num){

              b = true;

              break;

}

}

if(b){

       System.out.println(“找到了”):

}else{

       System.out.println(“没找到”);

}

4.数组的反转

int[] arr = {12,34,56,224,56,434};

for(int i = 0,j = arr.length;I < arr.length;i++,j--){

       int temp = arr[i];

       arr[i] =arr[j];

       arr[j] = temp;

}

5.数组排序 image.png

int[] arr = {12,34,56,224,56,434};

way-1:选择排序

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

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

       if(arr[i] > arr[j]){

              int temp = arr[i];

              arr[i] = arr[j];

              arr[j] = temp;

        }     

    }

}

Way-2:冒泡排序 image.png

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

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

              if(arr[j] > arr[j+1]){

                   int temp = arr[j];

                   arr[j] = arr[j+1];

                   arr[j+1] = temp;

                }

        }

}

二维数组

1.定义:元素为一维数组的数组成为二维数组

2.二维数组的定义格式:

格式一:元素的数据类型[][]   数组的名字 =  new   元素的数据类型[二维数组的长度][一维数组的长度]

  int[][]   arr   =    new     int[3][2];

格式二:元素的数据类型[][]  数组的名字  =   new   元素的数据类型[二维数组的长度][]

  int     arr   =  new  int[3][];

  System.out.println(arr[0]);//null

  System.out.println(arr[1]);//null

  System.out.println(arr[2]);//null

格式三:元素的数据类型[][]   数组的名字  =  {{元素1,元素2,……},{元素1,元素2,……},{元素1,元素2,……},……}

   int    arr   =   {{1,2,3},{4,5,6},{7,8}}

注意:每一个一维数组中的元素的个数是可以不一样的  

3.二维数组的遍历

for(in t i = 0;i < arr.length;i++){

       for(int j = 0;j<arr[i].length;j++){

               System.out.println(arr[i][j]);

        }

}

方法

定义

    具有特定功能的独立的小程序{代码块}

作用

    提高了代码的复用性

    提高了代码的维护性

格式:

修饰符  返回值类型  方法的名字(数据类型  变量名, 数据类型  变量名,……){

 执行语句;(该方法的功能的代码实现)

 return 返回值;

}

  • 修饰符:目前学习阶段,规定为public static
  • 返回值类型:返回值的数据类型
  • 方法的名字:见名知意,驼峰命名法
  • (……):参数列表

调用

方法只有被调用才会执行

方法一:单独调用 —— 方法名(参数)

注意:如果方法的返回值类型为void的时候,不能使用输出调用;
        如果方法有具体返回值的时候,使用单独调用没有任何意义

方法二:输出调用 —— System.out.println(方法名(参数))

注意:如果方法的返回值类型为void的时候,不能使用输出调用

方法三:赋值调用 —— 数据类型 变量名 = 方法名(参数)

使用方法的注意事项

  (1)方法与方法是平级关系,所以不能嵌套定义

public  static  int   aaa(){

       public  static  int  bbb()//错误使用

               return  1;

        }

        return 1;

}

(2)方法的返回值类型和return出来的值要匹配

 (3)当方法没有具体的返回值的时候,返回值类型就位void

public  static void  aaa(){

       return ;

}

void:没有什么特殊的含义,而且只能写在返回值类型的位置上,代表该方法没有返回值

注意:当方法的返回值类型为void的时候,return关键字是可以省略不写的

public  static  void   aaa(){

       //return;

}

(4)return关键字有什么用呢?

    可以返回具体的数据,哪里调用返哪里

    作为方法的结束标记

方法的重载

(1)什么是方法的重载:指在同一个类中,出现两个方法的名字相同,参数列表不同(参数的个数不同,数据类型不同,对应的顺序位置不同)的两个方法,就称为方法的重载

方法的重载与返回值类型无关

public class Demo{

    public  void   aaa(){

    }

    public  void  aaa(int i){

    }

    public  void  aaa(int  i,int   j){

    }

    public  void  aaa(double  i,double  j){

    }

    public  void  aaa(int  i,double  j){

    }

    public  int  aaa(int  i,double  j){

    }

    /*public  void  aaa(double  x,double  y){ //错误

    }*/

    /*public  int aaa(double  i,double  j){ //错误

    }*/

}