49天精通Java,第36天,Java数组、java数组初始化、java数组赋值

news2024/12/25 12:22:07

在这里插入图片描述

目录

    • 一、声明数组
    • 二、初始化数组
    • 三、访问数组元素
    • 四、遍历数组
    • 五、数组复制
      • 1、基本类型数组复制
      • 2、Object数组复制
      • 3、多维数组复制
      • 4、对象数组复制

大家好,我是哪吒。

🏆本文收录于,49天精通Java从入门到就业。

全网最细Java零基础手把手入门教程,系列课程包括:基础篇、集合篇、Java8新特性、多线程、代码实战,持续更新中(每周1-2篇),适合零基础和进阶提升的同学。

Java中的数组是一种有序的数据结构,用于存储相同类型的元素。

一、声明数组

在Java中,声明数组需要指定数组的类型、名称和长度。

int[] arr;

声明一个长度为10的整型数组:

int[] arr= new int[10];

二、初始化数组

初始化数组:

int[] arr= {1, 2, 3, 4, 5};

使用以下语法来逐个初始化数组元素:

int[] arr = new int[5];  
arr[0] = 1;  
arr[1] = 2;  
arr[2] = 3;  
arr[3] = 4;  
arr[4] = 5;

三、访问数组元素

可以使用以下语法来访问数组元素:

// 获取数组元素的值  
int value = arr[index]; 
// 设置数组元素的值
arr[index] = value; 

其中,index是数组元素的索引,从0开始计数。

例如,arrayName[0]表示数组的第一个元素。

四、遍历数组

可以使用for循环来遍历数组。

for(int i=0; i<arr.length; i++){  
    System.out.println(arr[i]);
}

数组必须确定大小,如果无法确定大小,还可以使用数组吗?

五、数组复制

1、基本类型数组复制

package com.guor.test.javaSE.collection;
 
import java.util.Arrays;
 
import com.guor.test.User;
 
public class ArrayTest {
 
	public static void main(String[] args) {
		beanCopy();
	}
	
	//**************************************************************
	private static void copySelf() {
		int[] ids = { 1, 2, 3, 4, 5 };  
		System.out.println(Arrays.toString(ids));
		//System.arraycopy(src, srcPos, dest, destPos, length);
		// 把从索引0开始的2个数字复制到索引为3的位置上  
		System.arraycopy(ids, 0, ids, 3, 2);
		System.out.println(Arrays.toString(ids));//[1, 2, 3, 1, 2]
	}
	
	private static void copyToOther() {
		int[] ids = { 1, 2, 3, 4, 5 };  
		//将数据的索引1开始的3个数据复制到目标的索引为0的位置上  
		int[] other = new int[5];
		System.arraycopy(ids, 1, other, 0, 3);
		System.out.println(Arrays.toString(ids));//[1, 2, 3, 4, 5]深复制
		System.out.println(Arrays.toString(other));//[2, 3, 4, 0, 0]
	}
}

2、Object数组复制

//如果是类型转换问题,获取整形
private static void getIntegerArrayFromObjectArray() {
    Object[] obj1 = { 1, 2, 3, "4", "5" };
    Integer[] obj2 = new Integer[5];
 
    try {
        System.arraycopy(obj1, 0, obj2, 0, obj1.length);
    } catch (Exception e) {
        System.out.println("transfer exception:"+e);
    }
    System.out.println(Arrays.toString(obj1));
    System.out.println(Arrays.toString(obj2));
}
 
//获取Object数组中的字符串类型数据
private static void getStringArrayFromObjectArray1() {
    Object[] obj3 = { 1, 2, 3, "4", "5" };
    String[] obj4 = new String[5];
    try {
        System.arraycopy(obj3, 2, obj4, 2, 3);
    } catch (Exception e) {
        //transfer exception:java.lang.ArrayStoreException
        System.out.println("transfer exception:"+e);
    }
    System.out.println(Arrays.toString(obj3));
    //[null, null, null, null, null]
    System.out.println(Arrays.toString(obj4));
}
 
//获取Object数组中的字符串类型数据
private static void getStringArrayFromObjectArray2() {
    Object[] obj3 = { 1, 2, 3, "4", "5" };
    String[] obj4 = new String[5];
    try {
        System.arraycopy(obj3, 3, obj4, 3, 2);
    } catch (Exception e) {
        System.out.println("transfer exception:"+e);
    }
    System.out.println(Arrays.toString(obj3));
    //[null, null, null, 4, 5]
    System.out.println(Arrays.toString(obj4));
    obj3[3] = "zhangssan";
    System.out.println("查看是浅复制还是深复制~~~~~");
    System.out.println(Arrays.toString(obj3));
    System.out.println(Arrays.toString(obj4));
}

3、多维数组复制

//多维数组
public static void twoArray() {
    int[] arr1 = {1, 2};
    int[] arr2 = {3, 4};
    int[] arr3 = {5, 6};
 
    int[][] src = new int[][]{arr1, arr2, arr3};
 
    print("原始模样:", src);
    int[][] dest = new int[3][];
    System.arraycopy(src, 0, dest, 0, 3);
 
    System.out.println("改变前");
    print("src = ", src);
    print("dest = ", dest);
 
    //原数组改变后观察新数组是否改变,改变->浅复制,不改变->深复制
    src[0][0] = -1;
 
    System.out.println("改变后");
    print("src = ", src);
    print("dest = ", dest);
}

4、对象数组复制

//对象复制
private static void beanCopy() {
    User user1 = new User("zs",18);
    User user2 = new User("ls",18);
    User user3 = new User("ww",18);
    User[] userArraySrc = {user1, user2, user3};
    User[] userArrayDest = new User[3];
    System.out.println("对象复制,原始模样:"+Arrays.toString(userArraySrc));
    System.arraycopy(userArraySrc, 0, userArrayDest, 0, userArraySrc.length);
    System.out.println("userArrayDest," + Arrays.toString(userArrayDest));
    System.out.println("------------改变原对象------------------");
    userArraySrc[0] = new User("su",20);
    System.out.println("***" + Arrays.toString(userArraySrc));
    System.out.println("***" + Arrays.toString(userArrayDest));
}
 
//二维数组toString()
private static void print(String string, int[][] arr) {
    System.out.print(string);
    for (int[] a : arr) {
        for (int i : a) {
            System.out.print(i + " ");
        }
        System.out.print(",");
    }
    System.out.println();
}

在这里插入图片描述

🏆本文收录于,49天精通Java从入门到就业。

全网最细Java零基础手把手入门教程,系列课程包括:基础篇、集合篇、Java8新特性、多线程、代码实战,持续更新中(每周1-2篇),适合零基础和进阶提升的同学。

🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。

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

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

相关文章

企业开发前端框架2023最新前沿技术vue3+vite+vuetify+js+Tailwind Css

文章目录 前言创建项目1、打开vuetify的官网下载项目2、下载依赖3、添加tailwindcss依赖 结束 前言 最近需要开发新的项目&#xff0c;正好学习了Tailwindcss&#xff0c;所以就想着集成到新项目里来&#xff0c;一来可以精进项目经验&#xff0c;也可以感受一下tailwindcss的…

6.1黄金探底回升是否到顶,今日多空如何布局

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周三(5月31日)黄金期货价格攀升&#xff0c;美国国债收益率下降推动金价升至一周最高收盘位。美市尾盘&#xff0c;现货黄金收报1962.42美元/盎司&#xff0c;上升3…

实验篇(7.2) 05. SSL - 通过浏览器访问远端内网服务器 ❀ 远程访问

【简介】直接将内网服务器映射成公网IP&#xff0c;可以方便的从任何地方访问服务器的指定端口&#xff0c;但是这种方式下&#xff0c;服务器是公开且暴露的。那有没有即方便、又比较安全的远程访问服务器的方法呢&#xff1f;我们来看看SSL VPN的Web模式。 SSL VPN介绍 从概念…

小心618的iPhone优惠套路 实测对比京东更靠谱

今年的618&#xff0c;各大电商平台都纷纷摩拳擦掌&#xff0c;宣称要拿出史上最大力度来承办这次大促活动&#xff0c;希望以最大的诚意来挖掘消费者的需求潜力&#xff0c;作为资深果粉的我&#xff0c;必然也是希望能在此次618大促中买到心仪已久的Apple产品。 对比之后才发…

opencv的Mat相关操作

cv Mat类型的使用 下载安装好opencv&#xff0c;使用时只需添加如下头文件&#xff1a; #include<opencv2/opencv.hpp>另外在工程的属性页中要添加opencv的包含目录与库目录&#xff1a; 在写稍大一些工程的时候&#xff0c;尽量不要直接用using namespace cv; 因为在…

运营策略:影响内容病毒式传播的 8 个维度

目录 01 第一个影响要素就是内容的类型 02 第二个要素时内容的长度 03 第三个要素是要唤起正确的情感 04 第四个是利用趋势&#xff0c;也就是热点问题或事件 05 第五个是视觉效果 06 第六个是增加作者署 07 第七个是在正确的时间发布内容 08 第八个是影响者的力量 病毒…

“实时数据同步:构建高效的 MySQL 数据同步方案“

方案一 基于LVM快照进行备份切换 介绍: MySQL数据库本身并不支持快照功能(sqlServer支持) 因此快照备份是指通过文件系统支持的快照功能对数据库进行备份 备份的前提是将所有数据库文件放在同一文件分区中&#xff0c;然后对该分区进行快照操作 LVM是LINUX系统下对磁盘分区进…

Linux:磁盘资源耗尽故障

有两种经典原因 磁盘空间已被大量的数据占满&#xff0c;空间耗尽。 解决办法&#xff1a;将没有用的大型文件转移或删除 文件i节点耗尽故障 &#xff08;文件过多&#xff09; 解决办法&#xff1a;删除 磁盘被大型文件占满 模拟 准备了一个2G大小的分区 然后进行挂载 我…

电子企业如何高效地使用MES生产管理系统

引言&#xff1a; 在当今数字化、智能化的时代&#xff0c;电子企业的发展已经达到了一个新的高度。与此同时&#xff0c;MES生产管理系统在电子企业中扮演着越来越重要的角色。本文将探讨电子企业如何高效地使用MES生产管理系统&#xff0c;提高企业生产效率和管理水平&#…

基于点云和图像的目标识别与定位,以及目标去重

【背景介绍】 无人系统常常面临对特定目标进行跟踪侦察的任务需求&#xff0c;这就要求无人系统要具备对目标进行识别以及对目标进行定位的能力&#xff0c;同时&#xff0c;任务一般发生在一段连续时间跨度&#xff0c;而相同目标存在被单个机器人重复发现&#xff0c;或者被…

Vue电商项目--详情页面完成

放大镜操作上 <script> var mySwiper new Swiper (.swiper, {direction: vertical, // 垂直切换选项loop: true, // 循环模式选项// 如果需要分页器pagination: {el: .swiper-pagination,},// 如果需要前进后退按钮navigation: {nextEl: .swiper-button-next,pr…

14.2:派对的最大快乐值

派对的最大快乐值 员工信息的定义如下: class Employee { public int happy; // 这名员工可以带来的快乐值 List subordinates; // 这名员工有哪些直接下级 } 公司的每个员工都符合 Employee 类的描述。整个公司的人员结构可以看作是一棵标准的、 没有环的多叉树 树的头节点是公…

框架解耦神器 -- REventBus

REventBus背景 在实际的项目开发中&#xff0c;经常会遇到业务与业务&#xff0c;组件与组件&#xff0c;业务与组件之间的通信&#xff0c;举个例子&#xff1a;当有烟雾传感器检测到烟雾超标时&#xff0c;需要打开排气扇排气&#xff0c;同时显示烟雾浓度显示到显示器中&am…

centos7升级rockylinux 未写完

前言 查看centos的版本 &#xff0c;我这台服务器是虚拟机 [rootlocalhost ~]#cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]#uname -a Linux jenkins_server 3.10.0-1160.83.1.el7.x86_64 #1 SMP Wed Jan 25 16:41:43 UTC 2023 x86_64 …

PIC 使能485/422笔记(修订中...)

1.需求 工作中需要把目前设备的单向232转为485/422模式&#xff0c;实现双向通讯&#xff0c;目前查找相关资料。突然想到一件事&#xff0c;我是否能让232现有的单向上发线同时连工控机的tx,rx&#xff0c;然后靠协议&#xff0c;来定时切换PIC一侧的tx rx?PIC可能不支持这个…

Python之pyecharts的常见用法2-柱状图-折线图

Pyecharts是一个基于Echarts的Python可视化库&#xff0c;可以用Python语言轻松地生成各种交互式图表和地图。它支持多种图表类型&#xff0c;包括折线图、柱状图、散点图、饼图、地图等&#xff0c;并且可以通过简单的API调用实现数据可视化。 Pyecharts的优点包括&#xff1a…

关于 Oracle Schema 级别的权限问题

作者 | JiekeXu 来源 |公众号 JiekeXu DBA之路&#xff08;ID: JiekeXu_IT&#xff09; 如需转载请联系授权 | (个人微信 ID&#xff1a;JiekeXu_DBA) 大家好&#xff0c;我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看关于 Oracle Schema 级别的权限问题&#xff0c…

PyCaret 3.0介绍 -- Python中的开源、低代码机器学习库

PyCaret是一个Python中的开源、低代码机器学习库&#xff0c;可以自动化机器学习工作流。它是一个端到端的机器学习和模型管理工具&#xff0c;可以成倍地加快实验周期&#xff0c;提高工作效率。 与其他开源机器学习库相比&#xff0c;PyCaret是一个替代的低代码库&#xff0c…

如何利用外卖小程序源码,快速开启你的外卖生意?

作为外卖行业不可或缺的一部分&#xff0c;外卖小程序越来越受到人们的关注。它不仅可以提高用户的订餐体验&#xff0c;还可以为商家带来更高的收益。然而&#xff0c;对于一些想通过外卖小程序来开启自己的外卖生意的商家来说&#xff0c;开发一款定制化的外卖小程序需要投入…

浙江大华后端开发一面面经

目录 1.SpringBuffer和SpringBuilder的区别是什么&#xff1f;2.常用的集合类有哪些&#xff1f;HashMap的底层数据结构&#xff1f;推荐一下线程安全的Map&#xff1f;3.TCP和UDP的差异是什么&#xff1f;4.MySQL的左连接和右连接的区别&#xff1f;5.MySQL慢查询如何排查&…