Java 方法定义使用与数组介绍

发布于:2022-11-09 ⋅ 阅读:(5) ⋅ 点赞:(0) ⋅ 评论:(0)

目录

一、方法定义使用

   1、Java方法定义

1.1  什么叫方法?

1.2 方法的定义

   2、方法重载

   3、方法递归

二、数组定义与使用

  1、数组的定义

  2、数组命名格式

  3、数组元素访问

  4、遍历数组

  5、数组的引用介绍

  6、数组转字符串


一、方法定义使用

    1、Java方法定义

      1.1  什么叫方法?

方法可以认为是一个数学中的公式模板,已经固定好了。你需要它的时候可以直接调用即可,无需做重复工作。

      1.2 方法的定义

方法的格式为:

public static 方法返回类型  方法名(参数类型   变量名){

          方法体;

        [return];

}


注意点:

1.返回类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void 
延伸:如何判断一个方法有无返回值?
答:方法是否有返回值,取决于方法的功能。
       如果其他地方有需要用到方法返回的值就必须使用返回值,ruturn 进行返回。如果一个方法返回一个值,则可以将这个返回的值赋给任何匹配的变量。
2. 方法名字:采用小驼峰命名
3. 参数列表:如果方法没有参数, () 中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
4. 方法体:方法内部要执行的语句
使用方法例子代码如下:
例一   计算两数之和
public class Class{
    public static void main(String[] args) {
      int a = 10;
      int b = 20;
      int sum = add(a,b);//调用add方法计算a+b的值
      System.out.println(sum);
}
    public static int add(int x,int y) {//进入add方法计算a+b的值
       return x+y;//返回两数和
}
}

例二   计算n阶之和:1!+2!+3!+......+n!

import java.util.Scanner;

public class Class {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {//键盘连续输入
            int a = scan.nextInt();
            int sum = 0;
            for (int i = 1; i <= a; i++) {
                sum += func(i);//调用方法计算阶乘
            }

            System.out.println(sum);
        }
    }
    public static int func(int n) {//进入方法
        int ret =1;
        for (int i = 1; i <=n ; i++) {
            ret *=i;
        }
        return ret;//返回计算阶乘的数值
    }
}

例三    交换两个数值并输出

public class TestMethod {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);//调用方法
        System.out.println("a = " + a + " b = " + b);
}
   public static void swap(int x, int y) {//进入方法
        int tmp = x;
            x = y;
            y = tmp;
        System.out.println("x = " + x + " y = " + y);//交换两数并输出
                  //此处交换两数后,因为其他地方无需使用到该交换后的值,所以无返回值,使用void
}
}

     

2、方法重载

方法重载是指在Java中一个类下面可以定义多个名字相同的方法,方法名字相同但参数类型不同,这样可以被称为方法重载。

注意点:方法重载只与方法名和参数类型有关,与方法返回类型无关。

1. 方法名必须相同
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
3. 与返回值类型是否相同无关

参数个数不同,如func(int x)与method(int x,int y)不同

参数类型不同,如func(int x)与method(double x)不同

参数顺序不同,如func(int x,double y)与method(double x,int y)不同

重载只与方法名与参数类型相关与返回值无关

如void func(int x)与int func(int y)不是方法重载,不能同时存在

重载与具体的变量标识符无关

如func(int x)与func(int y)不是方法重载,不能同时存在

     

 3、方法递归

递归定义:一个方法在执行过程中调用自身, 就称为 "递归"。递归就是方法对自己的调用。

例:计算1!+2!+3!+......+n!

import java.util.Scanner;

public class Class {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            int a = scan.nextInt();
            int sum = 0;
            for (int i = 1; i <= a; i++) {
                sum += func(i);
            }

            System.out.println(sum);
        }
    }
    public static int func(int n) {
     if(n == 1) {
         return 1;
     } else {
         return n*func(n-1);//方法递归调用
     }
    }
}
例:递归求斐波那契数列的第 N
public static int fib(int n) {
   if (n == 1 || n == 2) {
     return 1;
    }
     return fib(n - 1) + fib(n - 2);
    }

二、数组定义与使用

  1、数组的定义

数组:可以看成是相同类型元素的一个集合

  2、数组命名格式

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

数据类型[ ]  数组名 ={1,2,2,3};

数据类型[ ]  数组名 =new 数据类型[ ] {1,2,3,4,5};

注意点:数据类型可以为int、double、String

3、数组元素访问

(1)数组在内存中是一段连续的空间,空间的编号都是从0 开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。
(2)下标从 0 开始,介于 [0, N )之间不包含 N N 为元素个数,不能越界,否则会报下标越界异常。
例如:int[] array ={1,2,3,4,5,6};    //数组长度为6,数组下标依次为0,1,2,3,4,5
           int[] array = new int[6];      
           int[] array = new int[6] {1,2,3,4,5,6};  //array[0]=1,array[1]=2,array[2]=3,array[3]=4
array[ i ] 表示数组array下标为 i 的数组元素

   

4、遍历数组

依次访问数组并将数组元素打印出来,代码如下

代码一:使用循环语句遍历数组

public class Class {
   public static void main(String[] args) {
     int[] array ={1,2,3,4,5,6};
     for(int i = 0; i < array.length;i++) {//array.length指数组长度
       System.out.println(array[i]);   
     }
   }
}

代码二:使用 for-each 遍历数组

public class Class {
   public static void main(String[] args) {
     int[] array ={1,2,3,4,5,6};
     for(int x:array) {
      System.out.println(x);
      }
   }
}

   

5、数组的引用介绍

array是数组的引用变量,在内存中保存在Java虚拟机栈上,存储的是数组在堆空间中的首地址,

引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。通过该
地址,引用变量便可以去操作对象

int[] array={1,2,3,4,5};


举例说明:
public static void func() {
   int[] array1 = new int[]{0,0,0};
      array1[0] = 10;
      array1[1] = 20;
      array1[2] = 30;
   int[] array2 = new int[]{1,2,3,4,5};
      array2[0] = 100;
      array2[1] = 200;
      array1 = array2;
      array1[2] = 300;
      array1[3] = 400;
      array2[4] = 500;
  for (int i = 0; i < array2.length; i++) {
     System.out.println(array2[i]);
   }
}

分析步骤1:

 在虚拟机栈中创建2个数组array1和array2,

      array1[0] = 10;         array2[0] = 100;
      array1[1] = 20;         array2[1] = 200;
      array1[2] = 30;

通过下标方式修改将堆中数组元素修改


分析步骤2:

 此时array1=array2,array1指向array2所指向的对象,array1和array2两个栈帧指向同一个对象。

      array1[2] = 300;
      array1[3] = 400;
      array2[4] = 500;

再通过下标修改方式将对象数组元素进行修改,array1和array2虚拟机栈中都指向同一个数组{100,200,300,400,500}

 6、数组转字符串

代码示例

import java.util.Arrays
public class Class {
   public static void main(String[] args) {
     int[] array ={1,2,3,4,5,6};
       System.out.println(Arrays.toString(array));   
     }
   }

使用Arrays.toString可以将数组转换为字符串进行输出