数组汇总0426

数组

数组定义:数组是相同数据类型按一定顺序排列的集合。

数组数据类型:数组属于引用类型,同时数组创建后大小不可更改

数组定义语法:

先声明再赋值     int[] ns(int[] ns = null;); ns = new int[5];
声明并赋        int[] ns = new int[5];
声明并赋值*繁    int[] ns = new int[]{1,2,3};
声明并赋值*简    int[] ns ={1,2,3};(简版声明和赋值必须在同一行)

数组语法含义:

int[] array = new int[10];

等号左边 等号右边

int:

告知编译器,创建int类型数据,有且只能储存int类型数据

new:

new需要再计算机堆区申请连续内存空间

【将申请到的空间内数据全部清空】                                  

[]:

告知编译器,当前创建数据类型为数组类型

告知编译器,数组名array是引用类型数据

int:

前后呼应,告知编译器这是int类型数据

array:

1.定义数组名,也是操作数组的核心数据,变量名

2.数组名array是引用类型数据

[10]:

告知编译器,数组容量capacity是10

数组元素的访问:

  数组中的元素可以通过下标来访问。下标从0开始,到【数组长度-1】结束。数组访问修改:

  arr[0]获取数组第一个元素

  arr[3]获取第四个元素

数组作为参数进行传递格式:

//数组作为参数进行传递格式:
    //方法调用时仅仅在方法中调用数组名即可
   // 方法定义时需完整定义:int[] arr
class Demo5 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        reverse(arr);
    }
    public static void reverse(int[] arr) {
    }

数据引用传递:

  基本数据类型

    基本数据类型中储存的为值,传递给其他对象后,不会影响本身的变化,相当与副本操作

  引用数据类型

    引用数据类型中储存的为地址,传递给其他对象后,会影响本身变化,相当与共享原对象的操作权限

                            ???数组类型返回值public static int[] calu(int[] arr){...return arr}

数组常用方法:

   for(i=0;i<ns.length;i++){}

   for(元素类型 元素变量:遍历对象){ 执行的代码 }

  快速打印数组内容:     System.out.println(Arrays.toString(ns))

   System.arraycopy(原数组,起始位置,新数组,新数组起始位置,原数组元素复制个数);

  java.util.Array.copyOf(原数组,新数组长度);

数组异常:

  数组取值范围:0~(length-1)

  数组下表越界会产生:java.lang.ArrayIndexOutOfBoundryException

  Int[] data = null;

  System.out.println(data[0])

  异常:java.lang.NullPointerException  调用未开辟空间的数组会发生空指向异常;

数组默认值:

                     整数:0

                     小数:0.0

                     字符:u0000

                     boolean:flase

                     引用类型:null

可变长参数:

  使用方法类似数组:(数组类型…形参名)需放置最后

  

public static void main(String[] args) {
  print("hello","java","comeon");//此处可随意更改参数数量,print("hello");也可运行
}
    
public static void print(String ...string) {
  for(String temp:string) {
    System.out.println(temp);
  }

}

二维数组

声明赋值方式              具体声明赋值方法

先声明、再分配   数据类型[][] 数组名; 数组名 = new 数据类型[高维长度][低维长度];

声明并分配空间   数据类型[][] 数组名 = new 数据类型[高维长度][低维长度];

声明并赋值(繁)  数据类型[][] 数组名 = new 数据类型[高维长度][] //不规则数组,自行new低维数组

声明并赋值(简)  数据类型[] 数组名 = {{v1,v2,v3},{v4,v5},{v6}}; //显示初始化

int[][] douarr=new int[2][];
    douarr[0]=new int[] {4,5};
    douarr[1]=new int[] {1,2,3};

数组其他知识点:

  寻址时,可设置初始位置index为-1

【有new时,一定会哟用到堆区空间/计算机原理-小端字节序,大端字节序】

数组与对象差异:数组中的堆内存保存的是一组信息,对象中堆内存保存的是对象的属性

语法层面:硬性要求

  《Java语言规范》:规定了什么,就能用什么。没有规定的,绝不能用。

  《Java虚拟机规范》:规定了怎么用,就支持怎么用,没有规定的,随便用。(支持自我创造)


数组练习题

1.数组插入数值

2.杨辉三角

3.在数组中返回所有目标值的下标

4.选择排序

5.冒泡排序

6.数组逆序


更新履历:

  0425:初步汇总完成

  0426:增加数组调用规范

  0426:增加练习题

原文地址:https://www.cnblogs.com/raising/p/12774517.html