Java教程

java数组

本文主要是介绍java数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组

什么是数组

Java提供了一个用于存储相同类型的元素的,固定大小的连续集合数据结构:数组。数组是用于存储数据的集合,储存相同类型数据的集合。

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

数组特点

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

声明创建数组

方法一

//        声明数组
int[] a;
//        创建数组
a = new int[20];

方法二

//        使用new操作符来创建数组,语法如下(一行)
int[] b = new int[20];

获取数组的长度

arrays.length  //arrays.length=下标数(从0开始)

数组赋值

//        声明数组
        int[] a;
//        创建数组
        a = new int[20];
        //写入元素进入数组(0-10)
        for (int i = 0; i < 11; i++) {
            a[i] =i;
        }
        System.out.println(a[10]);
//计算所有元素的和
        int sum = 0;
        for (int x:a){
            sum=sum+x;
        }
        System.out.println(sum);

赋值

//静态初始化:创建 + 赋值
int[] a = {1,2,3,4};
//        动态赋值
int[] b = new int[10];
b[0] = 10;

数组边界

	下标的合法区间:[0, length-1] 

java.lang.ArrayIndexOutOfBoundsException: 数组下标越界异常

内存分析

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

数组的使用

  • 基本For使用
  • For-Each循环
  • 数组作方法入参
  • 数组作返回值

基本For使用

int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
    arr[i] = i;
}
//基本for使用
System.out.println("基本for使用");
for (int i = 0; i < arr.length; i++) {
    if (i == 9){
        System.out.println(arr[i]);
    } else {
        System.out.print(arr[i]+"\t");
    }


}

For-Each循环

int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
    arr[i] = i;
}
//For-Each循环
System.out.println("For-Each使用");
for (int i : arr) {
    if (i == 9){
        System.out.println(i);
    } else {
        System.out.print(i+"\t");
    }


}

数组作方法入参

//main方法里
int[] arr = new int[10];
for (int i = 0; i < 10; i++) {
    arr[i] = i;
}
//数组作方法入参
System.out.println("数组作方法入参");
Array1(arr);
//定义方法
public static void Array1(int[] arr){
for (int i = 0; i < arr.length; i++) {
    if (i == 9){
        System.out.println(arr[i]);
    } else {
        System.out.print(arr[i]+"\t");
    }


}
}

数组作返回值

    //main方法里		
    int[] arr = new int[10];
    for (int i = 0; i < 10; i++) {
        arr[i] = i;
    }
    //数组作返回值
    System.out.println("数组作返回值");
    Array1(Array2(arr));
    //定义方法
    public static void Array1(int[] arr){
    for (int i = 0; i < arr.length; i++) {
        if (i == 9){
            System.out.println(arr[i]);
        } else {
            System.out.print(arr[i]+"\t");
        }


     }
    }
    //定义方法
    public static int[] Array2(int[] arr1){
    int[] a = new int[arr1.length];
    //反转数组
    for (int i = 0,j=a.length - 1; i < arr1.length; 			i++,j--) {
        a[j] = arr1[i];
    }
    return a;
}
这篇关于java数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!