JavaSE——数组

简介: JavaSE——数组

目录

  1. 数组的定义
  2. 数组的创建及初始化
  1. 数组的使用

 4. 数组是引用类型

  1. 数组传参
  2. 数组的定义
  1. 数组的创建及初始化

2.1 数组的创建
T[] 数组名 = new T[N];

int[] array1 = new int[10];

String[] array2 = new double[3];

2.2 数组的初始化
数组的初始化主要分为动态初始化以及静态初始化

  1. 动态初始化:在创建数组时,直接指定数组中元素的个数

int[] array1 = new int[10];

  1. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};

静态初始化可以简写,省去后面的new T[]

int[] array1 = {0,1,2,3,4,5,6,7,8,9};
省略格式不可以拆分,否则编译失败

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

  1. 数组的使用

3.1注意事项

下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常

public class Test {

public static void main(String[] args) {
    int[] array = new int[10];
    System.out.println(array[10]);
}

}

3.2数组的遍历

循环是最常用的遍历方式

public class Test {

public static void main(String[] args) {
    int[] array = new int[10];
    for (int i = 0;i < array.length; i++) {
        array[i] = i+1;
    }
    for (int i = 0;i < array.length; i++) {
        System.out.print(array[i]+" ");
    }
}

}

先用循环给array赋值,然后循环遍历数组

注意:在数组中可以通过数组对象.length来获取数组的长度

使用 for-each 遍历数组

for-each 是 for 循环的另外一种使用方式,能够更方便的完成对数组的遍历,可以避免循环条件和更新语句写错

for (int x:array) {

        System.out.println(x);
    }

 4. 数组是引用类型
4.1 初始JVM的内存分布

4.2 基本类型变量与引用类型变量的区别

例如:

public static void fun(){

    int a = 10;
    int b = 20;
    int[] array = new int[]{1,2,3,4};
}




我们可以看出,引用变量并不直接存储对象本身,存储的是对象在堆中空间的起始地址

再看一个例子:

import java.util.Arrays;
public class Test {

public static void main(String[] args) {

    int[] array = {1,2,3,4};
    int[] array2 = {4,5,6,7};
    array = array2;

    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.toString(array2));
}

}

通过地址,引用变量去操作对象

import java.util.Arrays;
public class Test {

public static void main(String[] args) {

    int[] array = {1,2,3,4};
    System.out.println(Arrays.toString(array));
    
    int[] array2 = array;
    array2[1] = 10;
    System.out.println(Arrays.toString(array));
    System.out.println(Arrays.toString(array2));
}

}

 我们可以看出,给array2赋值的同时,array的值也改变了

 array2这个引用指向了array这个引用指向的对象,因此给array2赋值的同时,array的值也改变

4.3 空引用

public class Test {

public static void main(String[] args) {
    int[] array = null;
    System.out.println(array[0]);
}

}

  1. 数组传参

看这块代码:

import java.util.Arrays;
public class Test {

public static void main(String[] args) {
   int[] array = {1,2,3,4};
   fun1(array);
   //fun2(array);
    System.out.println(Arrays.toString(array));
}
public static void fun1(int[] array){
    array = new int[10];
}
public static void fun2(int[] array){
    array[0] = 10;
}

}

import java.util.Arrays;
public class Test {

public static void main(String[] args) {
   int[] array = {1,2,3,4};
   //fun1(array);
   fun2(array);
    System.out.println(Arrays.toString(array));
}
public static void fun1(int[] array){
    array = new int[10];
}
public static void fun2(int[] array){
    array[0] = 10;
}

}

可以看出,这里修改了array的元素

相关文章
|
自然语言处理 Java 编译器
【javaSE】 方法的使用
【javaSE】 方法的使用
|
存储 Java 编译器
数组的定义与使用【JavaSE】
数组的定义与使用【JavaSE】
40 0
|
7月前
|
存储 Java 索引
|
7月前
|
存储 Java 索引
|
存储 机器学习/深度学习 Java
【javaSE】 数组的定义与使用
【javaSE】 数组的定义与使用
|
7月前
|
存储 Java C语言
JavaSE之数组
JavaSE之数组
55 0
|
存储 机器学习/深度学习 Java
【JavaSE】数组的定义与使用
【JavaSE】数组的定义与使用
|
机器学习/深度学习 自然语言处理 Java
【JavaSE】方法的使用
【JavaSE】方法的使用
|
机器学习/深度学习 Java 编译器
方法的使用【JavaSE】
方法的使用【JavaSE】
36 0
|
机器学习/深度学习 Java
【JAVASE】什么是方法
【JAVASE】什么是方法