1026804235Lzp

Java方法、数组详解

1.方法

Java方法是语句的集合,他们在一起执行一个功能

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法再程序中被创建,再其他地方被引用

设计方法的的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利用后期的扩展。

Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:

​ 方法包含一个方法头和一个方法体。

- 修饰符:修饰符是可选的,告诉编译器如何调用该方法。定义了方法的访问类型。
- 返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。
- 方法名:
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个参数被称为实参或变参。参数列表时值方法的参数类型、顺序和参数的个数。参数的可选的,方法可以不包含任何参数。
    • 形式参数:在方法被调用时用于接收外界输入的数据。
      • 实参:调用方法时实际传给方法的数据。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

return语句可以结束方法。

方法的重载:

重载就是在一个类中,有相同的函数名,但参数不同。

方法的重载的规则:

  • 方法名称必须相同
  • 参数列表必须不同(个数或类型或参数排列顺序)
  • 方法的返回类型可以相同也可以不同
  • 仅仅返回类型不同不足以成为方法的重载

方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。

2.命令行传参

main方法也可以传递参数

3.可变参数

也叫不定向参数。

在方法的声明中,在指定参数类型后加一个省略号(...)。

一个方法只能指定一个可变参数,他必须时方法的最后一个参数。任何普通的参数必须在它之前声明。

public class Test{
    public static void main(String[] args){
        Test t = new Test();
        t.test(1,2,3)
    }
    public void test(int... i){
    	System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
	}
}

可变参数的本质就是数组,i其实就是一个数组。

4.递归

递归就是A方法调用A方法。

利用递归可以用简单的程序来解决一些复杂的问题.

递归结构包括两个部分:

  • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
  • 递归体:什么时候需要调用自身方法。

5.数组

定义:

  • 数组是相同类型数据的有序集合
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
  • 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。

需要先声明数组变量,才能在程序中使用数组。

dataType[] arrayRefVar;

dataType arrayRefVar[];

Java语言使用new操作符来创建数组,语法如下:

dataType[] arrayRefVar = new dataType[arraySize];

int[] nums = new int[6];

数组的元素是通过下标(索引)来访问的,索引从0开始。

6.内存分析

Java内存

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

7.数组的初始化

  1. 静态初始化

    int[] a = {1,2,3};
    Man[] mans = {new Man(1,1), new Man(2,1)};
    
  2. 动态初始化:

    int[] a = new int[2];
    a[0] = 1;
    a[1] = 2;
    
  3. 数组的默认初始化

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

创建一个数组在Java内存中的过程是:

  1. 声明一个数组:

    将栈中的一部分内存分配给数组

  2. 创建数组:

    在堆中开辟一部分空间,分配给刚才声明的数组

  3. 给数组中元素赋值

    将堆中分配给数组的空间分别赋值

Java内存分配图

数组的四个基本特点

  1. 其长度是确定的,数组一旦被创建,它的大小就是不可以改变的。
  2. 其元素必须是相同类型,不允许出现混合类型。
  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
  4. 数组变量属引用 类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。

数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

8.多维数组

int a[][] = new int[2][5];

int a[][] = {{1,2},{2,3}};

9.Arrays类

  • 数组的工具类java.util.Arrays
  • Arrays提供了许多操作数组的方法
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,不用使用对象来调用

Arrays类中的常用方法:

  1. Arrays.toString()

    1. int[] a = {1,2,3,4,7,6,5};
      System.out.println(Arrays.toString(a));   //输出[1,2,3,4,7,6,5]
      
  2. Arrays.sort()

    //排序
    System.out.println(Arrays.toString(Arrays.sort(a)));  //输出[1,2,3,4,5,6,7]
    
  3. Arrays.fill(); //填充数据

  4. Arrays.binarySearch(); //二分查找

  5. Arrays.equal(); //比较是否相同

具体的可以查看jdk 帮助文档

分类:

技术点:

相关文章:

  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-11-23
猜你喜欢
  • 2021-12-03
  • 2021-11-23
  • 2021-11-23
  • 2021-10-18
  • 2021-09-24
  • 2021-11-23
  • 2021-05-13
相关资源
相似解决方案