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的元素

相关文章
|
存储 自然语言处理 BI
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
实现写入性能提升 4 倍、使用成本节省达 80% 的显著成效
488 1
从 Elasticsearch 到 Apache Doris 腾讯音乐内容库升级,统一搜索分析引擎,成本直降 80%
|
9月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
550 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
人工智能 关系型数据库 MySQL
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
本文通过一个利用百炼大模型平台和Dataphin数据服务API构建一个客户360智能应用的案例,介绍如何使用Dataphin数据服务API在百炼平台创建一个自定义插件,用于智能应用的开发,提升企业智能化应用水平。
733 4
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
|
Kubernetes jenkins 持续交付
jenkins连接k8s
jenkins连接k8s
666 7
|
运维 负载均衡 监控
探索微服务架构下的服务网格(Service Mesh)实践之路
【8月更文挑战第30天】 在当今日益复杂的分布式系统中,微服务架构已成为众多企业解决系统扩展与维护难题的利器。然而,随着服务的不断增多和网络交互的复杂性提升,传统的微服务管理方式开始显得力不从心。服务网格(Service Mesh)作为一种新兴的解决方案,旨在通过提供应用层的网络基础设施来简化服务间通讯,并增强系统的可观察性和安全性。本文将分享我在采用服务网格技术过程中的经验与思考,探讨如何在现代云原生环境中有效地实施服务网格,以及它给开发和运维带来的变革。
|
存储 安全 Go
CSRF 实验:Token 不存在绕过验证
CSRF 实验:Token 不存在绕过验证
|
Java Maven 容器
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
使用IntelliJ IDEA的Artifacts功能,可以将项目依赖的第三方jar包打包进jar文件中,实现双击jar包即可直接运行。
Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行
|
智能硬件
Wi-Fi 与蓝牙:差异解析
【8月更文挑战第24天】
2919 0
|
Java 编译器 C++
Java 基础语法(二)
Java 基础语法(二)
Java 基础语法(二)
|
机器学习/深度学习 人工智能 自然语言处理
AIGC背后的技术解读
AIGC(人工智能生成内容)是当下最火的概念之一,它利用人工智能技术自动生成各种内容,如文章、图片、视频等。这种新型生产方式的出现,不仅满足了人们的创作需求,也展现了惊人的创作才能。那么,AIGC背后的技术究竟是怎样的呢?