Java学习05 方法 方法重载 可变参数 递归 数组

方法

  • 方法是语句的集合,他们在一起执行一个功能
    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或对象
    • 方法在程序中被创建 在其他地方被引用
  • 设计方法的原则
    • 方法本意是功能块,就是实现某个功能的语句块的集合.设计方法的时候,最好保持方法的原子性 一个方法只完成1个功能,有利于后期拓展
  • 方法包括一个方法头和一个方法体
    • 修饰符 可选,告诉编译器如何调用该方法 定义了该方法访问类型 public static
    • 返回值类型 方法可能会返回值 return Valuetype 如无返回值 关键词 为void
    • 方法名 是方法的实际名称 方法名和参数表共同构成方法签名
    • 参数类型 参数像是一个占位符 当方法被调用时,传递值给参数 这个值被称为实参或变量 参数列表是指方法的参数类型 顺序和参数的个数 参数是可选的,方法可以不包含任何参数
    • 方法体 包含具体的语句,定义该方法的功能
  • Java都是值引用

方法重载

  • 在一个类中,有相同的函数名称,但形参不同的函数
  • 方法重载规则
    • 方法名称必须相同
    • 参数列表必须不同(个数不同 类型不同 参数排列顺序不同)
    • 方法的返回类型可以相同也可以不同
    • 仅仅返回类型不同不足以称为方法的重载
//在命令行中传递参数
javac Demo09
java com.wu.scanner.Deom09 hello world
//由于引入了包,所以必须将包名写全,否则报错

可变参数

  • JDK1.5以后,Java支持传递同类型的可变参数给一个方法
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能声明一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明
package com.wu.scanner;

public class Demo10 {
    public static void main(String[] args) {
        Demo10 demo10 = new Demo10();
        demo10.theMax(102,32,80.4,30.4,104,9);
        demo10.theMax(90.44,90,34,34,34);

    }

    public void theMax(double ... i){
        if ( i.length ==0){
            System.out.println("no arguments");
            return ;
        }
        double maxValue=0;
        for( int j=0;  j < i.length; j++){
            if( i[j]  > maxValue){
                maxValue = i[j];
            }
        }
        System.out.println("the max value is:" + maxValue);
    }
}

递归

  • 自己调用自己
  • 包括两部分
    • 递归头: 什么时候不调用自身方法
    • 递归体: 什么时候需要调用自身方法
public class Demo11 {
    public static void main(String[] args) {
            int  i =recursion(5);
        System.out.println(i);
    }

    public static int recursion( int n){
        if(n==1){
            return 1;
        }else {
            return n * recursion(n -1);
        }
    }

}

数组

  1. 数组是相同类型数据的有序集合

  2. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成

  3. 其中,每一个数据称作一个数组元素 每个数组元素可以通过一个下标访问他们

    • 声明数组变量

      • dataType[] arrayRefVar; //首选

      • dataType arrayRefVar[];

    • 使用new操作符来创建数组

      • dataType[] arrayReVar = new dataType[ arraySize]
    • 静态初始化 : 创建 + 赋值 int[] a = {1,2,3,4}

    • 动态初始化: 包含默认初始化 int[] a =new int[10]

    • 数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量相同的方式被隐式初始化

    int[] nums = new int[10];
    

内存分析

  1. 堆 存放new的对象和数组 可以被所有的线程共享 不会存放别的对象引用
  2. 栈 存放基本变量类型(包含这个基本类型的具体数量) 引用对象的变量
  3. 方法区 可以被所有的线程贡献 包含了所有class和static变量

数组特征

  1. 其长度是确定的,数组一旦被创建 它的大小就是不可以改变的
  2. 其元素必须是相同类型 不允许出现混合类型
  3. 数组中的元素可以是任何数据类型 包括基本类型和引用类型
  4. 数组变量属于引用类型 数组也可以看成是对象, 数组中的每个元素相当于该对象的成员变量. 数组本身就是对象,Java中对象是在中,因此数组无论保存原始类型还是其他对象雷响,数组对象本身是在堆中

多维数组

int[][] arrays = {{1,2},{3,4},{5,6}};
for(int i =0 ;  i < arrays.length; i++){
    for(int j = 0 ; j < arrays[i].length; j++){
        System.out.println(arrays[i][j]);
    }
}
  • 可以看成数组的数组

Arrays 类

  • 数组的工具类 java.uti.Arrays

  • Arrays类中方法都是使用static修饰的静态方法 在使用的时候可以直接使用类名进行调用 而不用使用对象调用

  • 常用方法:

    • 给数组赋值 : fill方法 左闭右开
    • 对数组排序 : sort方法 升序
    • 比较数组 : equals方法
    • 查找数组元素 : binarySearch方法 二分法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值