Java---数组

news2024/9/8 23:38:03


乐观学习,乐观生活,才能不断前进啊!!!

我的主页:optimistic_chen
我的专栏:c语言
欢迎大家访问~
创作不易,大佬们点赞鼓励下吧~

前言

无论c语言还是java数组都是重中之重,今天我们来学习java数组,看他与C语言中有几分不同。

文章目录

  • 前言
  • 数组的创建
  • 初始化
  • 数组的使用
  • 数组的本质
  • 数组应用
    • 参数传基本数据类型
    • 参数传输组类型(引用数据类型)
  • 引用变量
  • 完结

数组的创建

Type[ ] 数组名=new Type[N]

例如:

int[] array=new int[10];
double[] array2=new double[10];
String[] array3=new String[10];

初始化

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

int[] array=new int[10];

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

Type[] 数组名={data1,data2,...,datan};

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

注意:
·静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
·静态初始化时, {}中数据类型必须与[]前数据类型一致。
·静态初始化可以简写,省去后面的new Type[ ]。
·如果没有对数组初始化,数组中元素为默认值。
·如果·数组中储存元素的类型为引用类型,默认值为NULL

类型默认值
byte0
short0
int0
long0
float0.0f
double0.0
char0
booleanfalse

数组的使用

因为在C语言中我们接触过数组,所以对于基本的数组访问和遍历我们不再说明,相信大家都了解过很多。我们直接从两者不同的地方开始说起。
C语言中求数组长度时使用sizeof关键词,但是在Java中数组长度可以通过数组对象.length来获取

int[]array = new int[]{10, 20, 30, 40, 50};
for(int i = 0; i < array.length; i++){
  System.out.println(array[i]);
}

当然,遍历数组也有一个新方式,for-each循环,语法格式如下:

for(数据类型 变量:集合名称){
代码块;
}

int[] array = { 100, 200, 300, 400, 500 };
		for (int x : array) {
			System.out.print(x+",");
		}

虽然foreach是for循环的增强版,简化了编程,提高了代码的可读性和安全性,避免了数组越界。而foreach一般是结合泛型使用,在需要使用数组或者集合索引时,for-each就不好用了。

数组的本质

之前博客初始Java中说过Java中的基本类型变量,指的是该变量空间中直接存放的是其所对应的值。而Java的数组是引用类型。指引用数据类型创建的变量,一般称为对象的引用,其空间中储存的是对象所在空间的地址

public static void func() {
  int a = 10;
  int b = 20;
  int[] array = new int[]{1,2,3};
}

array是数组类型的引用变量,其内部保存的内容可以简单理解成是数组在堆空间中的首地址(有点类似C语言中的指针)。
在这里插入图片描述

数组应用

参数传基本数据类型

public static void main(String[] args) {
  int num = 0;
  func(num);
  System.out.println("num = " + num);
}
public static void func(int x) {
  x = 10;
  System.out.println("x = " + x);
}

执行结果

在这里插入图片描述
发现在func方法中修改形参 x 的值, 不影响实参的 num 值.

参数传输组类型(引用数据类型)

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

执行结果

在这里插入图片描述
发现在func方法内部修改数组的内容, 方法外部的数组内容也发生改变.
因为数组是引用类型,按照引用类型来进行传递,是可以修改其中存放的内容的。

引用变量

public static void main(String[] args){
     int[] array={1,2,3,4};
     System.out.println(array);
     
     int a=10;
}

我们知道数组是引用类型,那么数组名应该为引用变量。既然是引用变量,那就说明存的是一个地址,那个地址的指向才是数组中真正存的东西。也就是说引用变量指向一个对象,即:array这个引用指向一个数组对象。

array[0]=1;//通过array这个引用,访问当前对象的0下标
array.length//通过array这个引用,访问当前对象的长度

示例:

public static void main(String[] args) {
        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这个引用指向array2这个引用指向的对象
        array1[2]=300;
        array1[3]=400;
        array2[4]=500;
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }
    }

在这里插入图片描述
当两个引用同时指向一个对象的时候,通过任何一个引用都能修改这个对象的值,并且如果一个对象如果一直没有人引用,那么JVM自动回收。

注意:一个引用不可能同时指向两个对象

完结

好了,这期的分享到这里就结束了~
如果这篇博客对你有帮助的话,可以点一个免费的赞并收藏起来哟~
可以点点关注,避免找不到我~
我们下期不见不散~~

下期预告:java—类与对象

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

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

相关文章

nasa数据集——1 度网格单元的全球月度土壤湿度统计数据

AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Averages V005 (AMSRE_AVRMO) at GES DISC GES DISC 的 AMSR-E/Aqua 第 3 级全球地表土壤水分月平均值 V005 (AMSRE_AVRMO) AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Standard Deviation V005 (…

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现(7000字论文参考+源码+LW+部署讲解)

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

不坑盒子是干啥的?

不坑盒子是一款专为提升办公效率设计的插件&#xff0c;它兼容Microsoft Office和WPS Office&#xff0c;支持Word、Excel、PPT等常用办公软件。这款插件自2024年初开始受到关注&#xff0c;其主要目的是为了让用户在日常办公中能够更加便捷地完成任务&#xff0c;从而提高工作…

昇思25天学习打卡营第23天 | Pix2Pix实现图像转换

内容介绍&#xff1a; Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到真实图片、灰…

二分法求函数的零点 信友队

题目ID&#xff1a;15713 必做题 100分 时间限制: 1000ms 空间限制: 65536kB 题目描述 有函数&#xff1a;f(x) 已知f(1.5) > 0&#xff0c;f(2.4) < 0 且方程 f(x) 0 在区间 [1.5,2.4] 有且只有一个根&#xff0c;请用二分法求出该根。 输入格式 &#xff08;无…

reduce规约:深入理解java8中的规约reduce

&#x1f370; 个人主页:_小白不加班__ &#x1f35e;文章有不合理的地方请各位大佬指正。 &#x1f349;文章不定期持续更新&#xff0c;如果我的文章对你有帮助➡️ 关注&#x1f64f;&#x1f3fb; 点赞&#x1f44d; 收藏⭐️ 文章目录 常见场景图示reduce中的BiFunction和…

【linux】阿里云centos配置邮件服务

目录 1.安装mailx服务 2./etc/mail.rc 配置增加 3.QQ邮箱开启smtp服务&#xff0c;获取授权码 4.端口设置&#xff1a;Linux 防火墙开放端口-CSDN博客 5.测试 1.安装mailx服务 yum -y install mailx 2./etc/mail.rc 配置增加 #邮件发送人 set from924066173qq.com #阿里…

完美解决AttributeError: ‘list‘ object has no attribute ‘shape‘的正确解决方法,亲测有效!!!

完美解决AttributeError: ‘list‘ object has no attribute ‘shape‘的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决AttributeError: ‘list‘ object has no attribute ‘shape‘的正确解决方法&#xff0c;亲测有效&#xff0…

Java对象引用的访问方式是什么?

哈喽&#xff0c;大家好&#x1f389;&#xff0c;我是世杰。 本文我为大家介绍面试官经常考察的**「Java对象引用相关内容」** 照例在开头留一些面试考察内容~~ 面试连环call Java对象引用都有哪些类型?Java参数传递是值传递还是引用传递? 为什么?Java对象引用访问方式有…

解释 C 语言中的递归函数

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

各向异性含水层中地下水三维流基本微分方程的推导

各向异性含水层中地下水三维流基本微分方程的推导 参考文献&#xff1a; [1] 刘欣怡,付小莉.论连续性方程的推导及几种形式转换的方法[J].力学与实践,2023,45(02):469-474. 文章链接 水均衡的基本思想&#xff1a; ∑ 流 入 − ∑ 流 出 Δ V \sum 流入-\sum 流出\Delta V ∑…

【系统架构设计师】九、软件工程(软件测试)

目录 八、软件测试 8.1 测试分类 8.2 静态方法 8.2.1 静态测试 8.2.2 动态测试 8.2.3 自动化测试 8.3 测试阶段 8.3.1 单元测试 8.3.2 集成测试 8.3.3 确认测试 8.3.4 系统测试 8.3.5 性能测试 8.3.6 验收测试 8.3.7 其他测试 8.4 测试用例设计 8.4.1 黑…

使用 Python 绘制美国选举分级统计图

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础 人工智能Python基础 人工智能基础核心知识 人工智能BI核心知识 人工智能CV核心知识 如何创建美国选举结果的时间序列分级统计图 数据地址为源地址&#xff0c;如果失效请与我联系。 2024 年美国大选将至&#xff0c;…

算法通关:004_1选择排序

代码一定要自己手敲理解 public class _004 {//选择排序&#xff0c;冒泡排序&#xff0c;插入排序//交换public static void swap(int[] arr,int i ,int j){int temp arr[i];arr[i] arr[j];arr[j] temp;}//选择排序public static void selectSort(int[] arr){if(arr null…

C++ | Leetcode C++题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack { public:queue<int> q;/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {int n q.size();q.push(x);for (int i 0; i < n; i) {q.push(q.front());…

LabVIEW实现LED显示屏视觉检测

为了满足LED显示屏在生产过程中的严格质量检测需求&#xff0c;引入自动化检测系统是十分必要的。传统人工检测方式存在检测强度高、效率低、准确性差等问题&#xff0c;自动化检测系统则能显著提高检测效率和准确性。视觉检测系统的构建主要包含硬件和软件两个部分。 视觉系统…

JDK中不能继承的类:final类的作用与意义

JDK中不能继承的类&#xff1a;final类的作用与意义 1、 为什么要用final类&#xff1f;2、JDK中有哪些final类&#xff1f;3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程中&#xff0c;有些类被标记为final&#xff0c…

前端面试题47(在动态控制路由时,如何防止未授权用户访问受保护的页面?)

在Vue中&#xff0c;防止未授权用户访问受保护页面通常涉及到使用路由守卫&#xff08;Route Guards&#xff09;。路由守卫允许你在路由发生改变前或后执行一些逻辑&#xff0c;比如检查用户是否已登录或者有访问某个页面的权限。下面是一些常见的路由守卫类型及其使用方式&am…

MapReduce底层原理详解:大案例解析(第32天)

系列文章目录 一、MapReduce概述 二、MapReduce工作机制 三、Map&#xff0c;Shuffle&#xff0c;reduce阶段详解 四、大案例解析 文章目录 系列文章目录前言一、MapReduce概述二、MapReduce工作机制1. 角色与组件2. 作业提交与执行流程1. 作业提交&#xff1a;2. Map阶段&…