Java基础语法之数组

news2024/12/23 17:40:10

  💕十年生死两茫茫,不思量,自难忘💕

作者:Mylvzi 

 文章主要内容:Java学习之--数组 

 

一.数组的基本概念

1.定义

 数组是相同数据类型的集合!使用数组来存放多个相同类型的数据!

2.Java中定义数组的方式

        // 通过new关键字定义一个数组
        int[] arr1= new int[10];
        int[] arr2 = {1,2,3,4,5};

注意:Java中定义数组的方式和C语言不同,Java中将数组名放在最后,前面是数组类型,这样定义更符合利用数据类型定义变量的方法!

3.Java中如果不给数组赋初始值,系统会自动赋默认值

如果是引用类型会赋值为null

4.再次深入理解引用类型!

        数组是一种引用类型,数组名就是通过引用类型创建的引用变量!引用变量存在于栈区,存放的是数组的地址!而数组本身是在堆上开辟的!下面通过两个代码来详细讲解!

   public static void func(int[] a) {
        a[0] = 10;
        System.out.println("a[0] = " + a[0]);// 输出10
    }
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        func(arr);
        System.out.println("arr[0] = " + arr[0]);// 输出10
}

 

    public static void func() {
        int[] array1 = new int[3];
        array1[0] = 10;
        array1[1] = 20;
        array1[2] = 30;
        int[] array2 = new int[]{1,2,3,4,5};
        array2[0] = 100;
        array2[1] = 200;
        array1 = array2;
        array1[2] = 300;
        array1[3] = 400;
        array2[4] = 500;
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);// 输出100 200 300 400 500
        }
    }

 

对象一定是在堆上的!但引用变量不一定在栈上 

 

二.数组的基本操作

1.自动获得数组长度

        // 利用数组方法获取长度
        int[] arr1 = new int[10];
        System.out.println(arr1.length);// 输出10

        char[] arr2 = new char[8];
        System.out.println(arr2.length);// 输出8

 2.for循环遍历数组(两种方式)

        // for循环打印数组
        int[] arr1 = {1,2,3,4,5};
        for (int i = 0; i <arr1.length ; i++) {
            System.out.println(arr1[i]);
        }
        
        // foreach循环打印数组-->也被称为加强for循环
        // 只能打印数组,无法拿到下标
        for (int x:arr1) {
            System.out.println(x);
        }

3.Arrays方法之将数组以字符串的形式输出 

Arrays方法是Java中重要的一种方法,用来对数组进行操作!

        // Arrays.toString以字符串的形式打印数组
        int[] arr1 = {1,2,3,4,5};
        char[] arr2 = {'a','b','c'};
        String[] arr3 = {"hello world!"};
        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr3));

4.Arrays方法之数组的拷贝 

 // 数组的复制
        int[] arr1 = new int[10];//原数组   新数组的长度
        int[] arr2 = Arrays.copyOf(arr1,arr1.length);
        int[] arr3 = Arrays.copyOf(arr1,arr1.length*2);

        System.out.println(Arrays.toString(arr1));
        System.out.println(Arrays.toString(arr2));
        System.out.println(Arrays.toString(arr3));

 

注意:还可以利用数组的拷贝实现对原数组的增删数据

        // 可以利用数组的复制实现对原数组增删数据
        int[] arr1 = {1,2,3,4,5};
        System.out.println(Arrays.toString(arr1));

        arr1 = Arrays.copyOf(arr1,arr1.length-1);// 删除原数组最后一个元素
        System.out.println(Arrays.toString(arr1));

        int[] arr2 = {1,2,3,4,5};
        arr2 = Arrays.copyOf(arr2,arr2.length+1);// 为原数组增添一个元素
        System.out.println(Arrays.toString(arr2));

 

还有一种简单的复制数组的方法arr.clone

        int[] arr1 = {1,2,3,4,5};
        int[] arr2 =arr1.clone();
        System.out.println("复制后的数组:"+Arrays.toString(arr2));
        // 输出:1 2 3 4 5

5.判断两个数组是否相等

        int[] arr1 = {1,2,3,4,5};
        int[] arr2 =arr1.clone();
        
        // 调用方法
        boolean isEqual = Arrays.equals(arr1,arr2);
        System.out.println(isEqual);// 输出true

6.判断数组是否为空

        int[] arr1 = {1,2,3,4,5};
        int[] arr2 =arr1.clone();

        // 判断是否为空
        boolean isEmpty = arr1.length == 0;// 类似于三目运算符的逻辑
        System.out.println(isEmpty);

 7.填充数字

        int[] arr1 = new int[10];
        // 填充数组
        Arrays.fill(arr1,5);
        System.out.println(Arrays.toString(arr1));

在指定范围内填充 

 ​​​​​​​​​​​​​​​​​​​​​Java中的from to是左闭右开

 

8.对数组进行升序排序

        int[] arr = {23,14,999,33,1};
        // 对原数组进行升序排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        // 输出:1  14  23  33  999

9.二分查找!

        int[] arr = {23,14,999,33,1};
        // 注意二分查找只适用于有序数组
        Arrays.sort(arr);
        int i = Arrays.binarySearch(arr,999);
        System.out.println(i);// 输出4

10.作为函数的返回值!!!

  C语言中数组无法作为函数的返回值,而Java中可以返回数组;

以斐波那契数列为例 

    // 返回数组的函数
    public static int[] fib(int x) {
        int[] arr = new int[x];
        arr[0] = arr[1] = 1;

        for (int i = 2; i <x ; i++) {
            arr[i] = arr[i-1] +arr[i-2];
        }

        return arr;
    }

    public static void main(String[] args) {
        int[] arr= fib(10);
        System.out.println(Arrays.toString(arr));

三.二维数组

1.二维数组的初始化 

注意在Java中不能省略行数,列数可以省略(和C语言相反)

        int[][] arr1 = new int[10][];
        int[][] arr2 = new int[][10];// err  java中二维数组的列不能省去行
        int[][] arr3 = {{1,2,3},{2,3,4},{3,4,5}};

2.二维数组的打印

  二维数组是一维数组的数组,从这个方面理解可以获取它的行数和列数 

        int[][] arr1 = {{1,2,3},{2,3,4}};// 定义一个两行三列的二维数组
        for (int i = 0; i < arr1.length ; i++) {// 二维数组名.length代表行数
            for (int j = 0; j <arr1[0].length ; j++) {// 二维数组第一个元素的长度代表列数
                System.out.print(arr1[i][j]);
            }
            System.out.println();
        }

 

再看一个代码:

 

总结:

1. 二维数组名.length代表行数

2.一维数组的元素个数就是二维数组的列数

2.不等长数组

  因为Java中行数必须指定,而列数可以不指定,也就是每一列的列数不确定,故而可以设置不等长的二维数组

 

四.总结

  数组是一种常用的引用类型,主要用于存储多个相同类型的数据;在Java中提供了很多与数组相关的包,类,方法如Arrays,要多去了解这些方法,会大大提高开发效率;同时,要深入理解二维数组是一维数组的数组,如何获取行数和列数,要注意和C语言中二维数组的差别! 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊云科技打造SAP核心业务系统上云最佳实践,加快业务转型和价值实现

数字化转型步入深水区&#xff0c;企业竞争日益激烈&#xff0c;乘云而上、快速进行现代化转型和创新&#xff0c;才能不断紧跟趋势变化&#xff0c;实现「高质量发展」。作为亚马逊云科技全球战略合作伙伴&#xff0c;SAP和亚马逊云科技的联合创新已超过15年&#xff0c;双方共…

持续深耕金融科技领域,神策数据正式加入证券基金行业信创联盟

近日&#xff0c;神策数据正式加入证券基金行业信息技术应用创新联盟&#xff08;简称“信创联盟”&#xff09;&#xff0c;携手更多行业力量&#xff0c;促进证券基金行业信创关键技术研究、应用和服务。 证券基金信创联盟由上交所联合行业券商倡议发起成立&#xff0c;由证监…

【计算机视觉 | 图像模型】常见的计算机视觉 image model(CNNs Transformers) 的介绍合集(十)

文章目录 一、GreedyNAS-A二、ASLFeat三、GreedyNAS-B四、Twins-PCPVT五、MoGA-A六、MoGA-C七、Visformer八、Multi-Heads of Mixed Attention九、LocalViT十、SPP-Net十一、The Ikshana Hypothesis of Human Scene Understanding Mechanism十二、DetNASNet十三、TResNet十四、…

thinkphp:查询本周中每天中日期的数据

以今天2023-09-14为例&#xff0c;这一周为2023-09-11~2023-09-07 运行结果 结果&#xff1a; 代码 后端thinkphp: //查询本周每天的的总金额数 //获取本周的起始日期和结束日期 $weekStart date(Y-m-d, strtotime(this week Monday)); $weekEnd date(Y-m-d, strtotime(t…

【Vue】大悟!模板语法-插值语法指令语法

模板语法 Vue模板语法包括两大类 插值语法 插值语法也就是两个大括号&#xff0c;也叫Mustache 功能&#xff1a;用于解析标签体内容&#xff0c;可以进行运算、三元表达式等,将最终解析出来的内容插入到标签中 写法&#xff1a;{{xxx}}&#xff0c;xxx 是 js 表达式&…

RSA算法研究报告

摘 要 分析RSA算法的应用现状&#xff0c;论证文件加密应用RSA算法的可行性和意义。设计一套完整实用的RSA文件加密解决方案&#xff0c;具体编码实现。对RSA算法进行研究&#xff0c;从常规RSA算法出发&#xff0c;用C实现RSA加密算法类库&#xff0c;并在32位windows平台封装…

如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用

推荐&#xff1a;使用NSDT场景编辑器快速搭建3D应用场景 概述 在这篇博文中&#xff0c;引用了几种文件扩展名和模型格式。在开始之前&#xff0c;最好了解以下内容&#xff1a; OBJ – 对象文件&#xff0c;一种标准的 3D 图像格式&#xff0c;可以通过各种 3D 图像编辑程序…

在springboot下将mybatis升级为mybatis-plus

在springboot下将mybatis升级为mybatis-plus 1. 整体描述2. 具体步骤2.1 更新pom引用2.2 更新yml配置2.3 更新config配置2.4 BaseEntity修改 3. 程序启动4. 总结 1. 整体描述 之前项目工程用的是mybatis&#xff0c;现在需要将其替换为mybatis-plus&#xff0c;mybatis-plus的…

实用技巧:Linux上实现OpenGauss数据库远程连接,方便的跨网络数据操作

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 &#x1f341; 小结 &#x1f341; 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许…

解决WIN11笔记本Type-C转DP线外接显示器重启开机没信号无法识别需再次插拔问题

在最新的WIN11系统中&#xff0c;你如果使用Type-C转DP线外接显示器&#xff0c;每次开机的时候或许会出现显示器没有信号的问题。这是因为你的显示器和转接线作为USB外设进入休眠了&#xff0c;导致需要再次插拔才能识别出来&#xff0c;不仅麻烦而且一次次插拔转接线是有磨损…

微信管理系统自动添加好友功能

你是否有这样的困扰&#xff0c;为什么你在添加多个好友的时候&#xff0c;容易添加频繁。你要先知道底层的规则是怎么样的&#xff0c;才能尽可能的去避免添加频繁&#xff0c;加到更多的好友。 微信主动添加好友的规则&#xff1a; ①通过附近人功能加人上限15人/天&#xf…

评价指标和超参数调整进阶

文章目录 查准率 查全率 F1 scoreGridSearchCV概述score参数的修改 classification report 目标&#xff1a; 综合考虑查准率和查全率&#xff0c;来确定最佳模型参数。 查准率 查全率 F1 score https://blog.csdn.net/qq_47180202/article/details/119780943 from sklea…

嵌入式学习笔记(31)异常向量表的编程处理

6.5.1像内存一样去访问异常向量表 &#xff08;1&#xff09;S5PV210的异常向量表可以改变&#xff08;在CP15协处理器中&#xff09;&#xff0c;以适应操作系统的需求。但是目前系统刚启动&#xff0c;此时DRAM尚未初始化&#xff0c;程序哦都市在iSRAM中运行。210在iSRAM中…

分享一个springboot+uniapp基于微信小程序的校医务室健康服务系统源码 lw 调试

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1f495;&…

笔记(二)图的基本表示【斯坦福CS224W图机器学习】

1、基础知识 图是由节点和连接组成的 本体图&#xff0c;具体图是本体图的实例化&#xff0c;取决于想要解决什么问题 2、图的种类 异质图 异质图-二分图 异质图-二分图-展开 3、节点连接数 节点的度、入度和出度 4、图的基本表示 邻接矩阵 无向图的邻接矩阵是对称阵&#…

Linux_dup、dup2函数

1.dup1 #include <unistd.h> int dup(int oldfd); 作用&#xff1a;复制一个新的文件描述符 从空闲的文件描述符表中&#xff0c;找一个最小的&#xff0c;作为新的拷贝的文件描述符 指向的文件和旧的文件描述符是一样的 int dup2(int oldfd, int newfd); #include <…

任意文件下载

原理&#xff1a; 文件查看或文件下载功能&#xff0c;不做限制&#xff0c;恶意用户就能够查看或下载任意敏感文件&#xff0c;这就是文件查看与下载漏洞。 一般链接形式: download.php?path down.php?file data.php?file download.php?filename 或者包含参数: &Sr…

python基础开发篇3——线上环境部署Django项目

文章目录 一、基本了解二、打包本地项目三、服务器环境准备四、安装web服务4.1 使用uwsgi代理4.2 使用nginx代理&#xff08;推荐&#xff09; 五、部署daphne 一、基本了解 部署思路&#xff1a; Nginx服务接收浏览器的动态请求&#xff0c;再通过uwsgi模块将请求转发给uwsgi服…

计算机网络(二):TCP篇

文章目录 1. TCP头部包含哪些内容&#xff1f;2. 为什么需要 TCP 协议&#xff1f; TCP 工作在哪一层&#xff1f;3. 什么是 TCP &#xff1f;4. 什么是 TCP 连接&#xff1f;5. 如何唯一确定一个 TCP 连接呢&#xff1f;6. UDP头部大小是多少&#xff1f;包含哪些内容&#xf…

基于SSM+Vue的鲸落文化线上体验馆设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…