Java教程

Java____数组

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

数组

  • 数组
    • 数组的声明与初始化
    • 数组的索引(偏移量)
    • 数组的遍历
      • for-each循环
        • 语法结构
    • 问题1:数组作为方法的参数问题
    • 数据类型:基本类型和引用类型
      • 基本类型:int long double 存储的是具体数值
      • 引用类型:存储的是地址
        • 认识null
    • Java中的内存划分:栈和堆
    • 数组引用作为方法的返回值

数组

数组:第一个引用类型 (顺序表)
一次定义并保存多个同类型的数
数据结构:数据如何存储
顺序表:元素按顺序存储的结构

数组的声明与初始化

定义一个长度为3的整型数组

int[] arr = new int[3];//此时数组中元素都是默认值0
                       //只定义不初始化
int[] arr = new int[]{1,3,5};//定义了一个长度为3的数组,值为1,3,5

int[] arr = {1,3,5};//简写

数组的索引(偏移量)

为何第一个元素要从0开始?
取出数组中的元素,需要使用数组名称[索引]
索引取值范围:0----长度-1
数组长度:数组名称.Length

public class ArrayLearn {
    public static void main(String[] args) {
        //定义一个长度为3的整型数组
        int[] arr = new int[3];
        int[] arr1 = new int[]{1,3,5};
        int[] arr2 = {1,3,5};
        //取出arr数组长度
        System.out.println(arr.length);
        //取出arr1数组中第二个元素
        System.out.println(arr1[2]);
    }
}

在这里插入图片描述
注意:当访问数组中不存在的元素时(越界问题)索引不存在合法取值内[0…arr.length - 1]在这里插入图片描述

数组的遍历

数组的遍历:依次取出数组中的每个元素并访问(输出)–for循环

public class ArrayLearn {
    public static void main(String[] args) {
        int[] arr = new int[]{1,3,5};
        //取出数组中的每个元素并打印
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+",");
        }
    }
}
public class ArrayLearn {
    public static void main(String[] args) {
        int[] arr = new int[]{1,3,5};
       
        //取出数组中的每个元素并打印
        for (int i = 0; i < arr.length; i++) {
            //修改第二个元素的值
            if (i == 1) {
                arr[i] = 10;
            }
            System.out.print(arr[i] + ",");
        }
        System.out.println(arr[1]);
    }
}

在这里插入图片描述

for-each循环

当只需要访问数组元素并不修改的前提下,可以使用for-each循环
语法结构

语法结构

for(临时变量 :数组名称)
每走一次循环,就将数组的元素依次赋值给临时变量,此时for-each循环无法修改原数组。

public class ArrayLearn {
    public static void main(String[] args) {
        int[] arr = new int[]{1,3,5};
        for (int i : arr){
        //定义了一个局部变量叫i
        //:号表示依次从数组中的第一个元素开始取值
        //取一个赋值给i作为输出
        System.out.print(i + ",");
        }
    }
}

问题1:数组作为方法的参数问题

方法值传递
数组可以交换

public class ArrayLearn {
    public static void main(String[] args) {
        int[] arr = new int[]{1,3};
       swap(arr);
        System.out.println(arr[0]+","+arr[1]);
        }
public static void swap(int[] arr){
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }


    //定义一个方法,传入一个整型数组并打印
    public static void printArr(int[] arr){
        for (int i : arr){
            System.out.print(i + ",");
        }
    }
}

数据类型:基本类型和引用类型

基本类型:int long double 存储的是具体数值

引用类型:存储的是地址

            引用实际上就是起个别名
            有new就有新空间
           引用类似是个指针,就保存了内存中的一个地址(也是个数)

认识null

在这里插入图片描述
当一个引用变量赋值为null时,表示此变量不保存任何地址,因此无法使用该变量进行操作。

Java中的内存划分:栈和堆

栈空间:保存的是函数中的局部变量(方法中的形参和实参)

public static void 方法名称(方法参数 形参){
      int a = 10;(实参)
}

堆空间:所有new的对象都在堆空间

数组引用作为方法的返回值

题:定义一个方法,将传入数组的每个元素*2处理(数组遍历)

public class ArrayLearn {
    public static void main(String[] args) {
        int[] arr = new int[]{10,20};
        int[] result = doubleArr(arr);
        System.out.println(arr[0]);
        }
//数组引用作为方法的返回值
    public static int[] doubleArr(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            arr[i] *= 2;
        }
        return arr;
    }

    public static void swap(int[] arr){
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }

在这里插入图片描述

这篇关于Java____数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!