3. JAVA数组与方法

1数组的定义

         数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组。

 数组的优点:

        不使用数组定义100个整型变量:int i1;int i2;…int i100

         使用数组定义:int i[100]

1.1一维数组

       一维数组可以存放上千万个数据,并且这些数据的类型是完全相同的。

      要使用Java的数组,必须经过两个步骤:(1)声明数组、(2)分配内存给该数组。这两个步骤的语法如下。

     (1)声明形式一:

              声明一维数组:数据类型 数组名[] = null ;

              分配内存给数组:数组名 =  new 数据类型[长度] ;

     (2)声明形式二:

              声明一维数组:数据类型[] 数组名= null

1.1.1声明数组:

     (1)int score[] = null ;   à null表示引用数据类型的默认值

  (2)为数组开辟空间  score = new int[3];

³数组操作中,在栈内存中保存的永远是数组的名称,只开辟了栈内存空间数组是永远无法使用的,必须有指向的堆内存才可以使用,要想开辟新的堆内存则必须使用new关键字,之后只是将此堆内存的使用权交给了对应的栈内存空间,而且一个堆内存空间可以同时被多个栈内存空间指向 

为数组中的元素赋值并进行输出

public class ArrayDemo02 {

  public static void main(String[] args) {

  int score[] = null// 声明数组,但未开辟堆内存

  score = new int[3];  // 为数组开辟堆内存空间,大小为3

  for (int x = 0; x < 3; x++) {  // 为数组中的每个元素赋值

  score[x] = x * 2 + 1 ;  // 为每一个元素赋值

  }

  for (int x = 0; x < 3; x++) {  // 使用循环依次输出数组中的全部内容

  System.out.println("score[" + x + "] = " + score[x]);

  }

  }

}

 取得数组长度

     在Java中取得数组的长度(也就是数组元素的长度)可以利用“数组名称.length”完成,如下面的格式:

     数组名称.length   à  返回一个int型数据

public class ArrayDemo03 {

  public static void main(String[] args) {

  int score[] = new int[3];  // 声明并实例化数组

  System.out.println("数组长度为" + score.length);  // 求出数组长度

  }

}

 数组的静态初始化

       数组的内容分为动态初始化和静态初始化两种。既可以采用先声明数组之后为数组中的每个内容赋值的方式完成,也可以通过数组静态初始化在数组声明时就指定其具体内容。

      如果想直接在声明时就给数组赋初值,可以利用大括号完成。只要在数组的声明格式后面再加上初值的赋值即可,如下面的格式:

       数据类型 数组名[] = {初值0 , 初值1 , … , 初值n}

  如下代码数组的静态初始化

public class ArrayDemo04 {

  public static void main(String[] args) {

  int score[] = {91,92,93,94,95,96};  // 使用静态初始化声明数组

  for (int x = 0; x < score.length; x++) {  // 循环输出

  System.out.println("score["+x+"] = " + score[x]) ;

  }

  }

}

 1.2 二维数组

   如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格。

   二维数组声明的方式和一维数组类似,内存的分配也一样是用new这个关键字。其声明与分配内存的格式如下所示:

   动态初始化:

            数据类型  数组名[][] ;

            数组名 = new 数据类型[行的个数][列的个数] ;

            动态初始化:

            数据类型 数组名[][] = new 数据类型[行的个数][列的个数]

    如, 声明整型数组score,同时为其开辟一块内存空间

            int score[][] = new int[4][3] ;

            整型数据score可保存的元素有4*3 = 12个,而在Java中,int数据类型所占用的空间为4个字节,因此该整型数组占用的内存共为4*12 = 48个字节

1.2.1二维数组的定义及使用

public class ArrayDemo08 {

  public static void main(String[] args) {

  int score[][] = new int[4][3];  // 声明并实例化二维数组

  score[0][1] = 30 ;  // 为数组中的部分内容赋值

  score[1][0] = 31 ;  // 为数组中的部分内容赋值

  score[2][2] = 32 ;  // 为数组中的部分内容赋值

  score[3][1] = 33 ;  // 为数组中的部分内容赋值

  score[1][1] = 30 ;  // 为数组中的部分内容赋值

  for (int i = 0; i < score.length; i++) {  // 外层循环行

  for(int j=0;j<score[i].length;j++){// 内层循环列

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

  }

  System.out.println("") ;  // 换行

  }

  }

}

 1.2.2二维数组静态初始化

     格式:

     数据类型 数组名[][] = {  {0行初值},{1行初值}…{n行初值},};

     声明二维数组:

     int score[][] = { { 67, 61 }, { 78, 89, 83 }, { 99, 100, 98, 66, 95 } };

public class ArrayDemo09 {

  public static void main(String[] args) {

  // 静态初始化一个二维数组,每行的数组元素个数不一样

  int score[][] = { { 67, 61 }, { 78, 89, 83 }, { 99, 100, 98, 66, 95 } };

  for (int i = 0; i < score.length; i++) {  // 外层循环输出行

  for (int j = 0; j < score[i].length; j++) {// 内存循环输出列

  System.out.print(score[i][j] + "\t");// 输出每一个元素

  }

  System.out.println("");  // 换行

  }

  }

}

 2 方法的声明及使用

 2.1方法的定义

         方法就是一段可重复调用的代码段,例如:有某段长度约100行的代码,要在多个地方使用此段代码,如果在各个地方都重复编写此部分代码的话,则肯定会比较麻烦,而且此部分代码如果修改的话也比较困难,所以此时可以将此部分代码定义成一个方法,以供程序反复调用。

       方法的定义格式:

        public static 返回值类型 方法名称(类型 参数1,类型 参数2{

       方法的主体

       程序语句 ;

       [return 表达式]

       }

       在本节中定义的方法,因为其可以直接使用主方法(main())调用,所以将方法声明处加上了public static两个关键字

       示例定义一个方法,在主方法中进行调用

        public class DemoMethod01 {

            public static void main(String[] args) {

                           printInfo() ;  // 调用printInfo()方法

                          printInfo() ;  // 调用printInfo()方法

                         printInfo() ;  // 调用printInfo()方法

                        System.out.println("Hello World!") ;

                       }

     // 此处由于此方法是由main方法直接调用所以一定要加上public static

               public static void printInfo() {  // 此处方法没有返回值

                          char c[] = {'H','e','l','l','o', ',','L','X','H'};  // 定义一个字符数组

                          for (int x = 0; x < c.length; x++) {  // 循环输出

                          System.out.print(c[x]) ;

                }

               System.out.println("") ;  // 换行

                         }

                       }

注意:方法命名规范要求

 定义类的时候,类的命名规范:“全部单词的首字母必须大写”。那么在定义方法的时候也是有命名规范要求的:“第一个单词的首字母小写,之后每个单词的首字母大写”,那么这就是方法的命名规范,之前的printInfo()方法也是按此规范定义的。这一点希望读者在日后的开发中一定要养成好的习惯。

方法的重载:方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同以完成不同功能的方法调用。 (方法的重载一定只是在参数上的类型或个数不同)

return结束一个方法

java的方法定义中,可以使用return语句直接结束方法

public class MethodDemo05 {

  public static void main(String[] args) {

  System.out.println("1、调用fun()方法之前。") ;

  fun(10) ;  // 调用fun()方法 

  System.out.println("2、调用fun()方法之后。") ;

  }

  public static void fun(int x) {

  System.out.println("3、进入fun()方法。") ;

  if(x==10){

  return// 结束方法,返回被调用处

  }

  System.out.println("4、正常执行完fun()方法。") ;

  }

}

 方法的递归调用

递归调用是一种特殊的调用形式,是方法自己调用自己

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值