【前端学java】java 中的数组(9)

往期回顾:

  • 【前端学java】JAVA开发的依赖安装与环境配置 (0)
  • 【前端学 java】java的基础语法(1)
  • 【前端学java】JAVA中的packge与import(2)
  • 【前端学java】面向对象编程基础-类的使用 (3)
  • 【前端学java】类中的访问权限详解,通俗易懂(4)
  • 【前端学java】java中final修饰符(5)
  • 【前端学java】全网最通俗易懂的JAVA抽象概念(6)
  • 【前端学java】Java中的接口和枚举概念(7)
  • 【前端学java】java中的Object类(8)

作为一个老前端,数组的概念在容易不过了:

let study = []
let num = [1,2,3,4,5,6,7,8,9]
let relax = [{time:"9:00",do:"sleep"},{time:"12:00",do:"eat"}]

上述代码,我们定义了study、num和relax三个数组,再骚一点,我们还可以用TS声明类型

let study:any[] = []
let num:string[] = [1,2,3,4,5,6,7,8,9]
interFace Relax {
  time:string,
  do:string
}
let relax:Relax[] = [{time:"9:00",do:"sleep"},{time:"12:00",do:"eat"}]

在java中,数组的概念和前端基本是一致的,不过,定义方法是有很大区别的!现在,我们来快速学习一下。

数组创建的语法规则

java中普通变量的声明规则是这样的

String name = "shixiaoshi"

数组的声明规则

类型[] 变量

如,String[] names

数组的创建规则

new 类型[容量]

所以,一个数组的完整声明创建过程如下

类型[] 变量 = new 类型[容量]

我们看几个示例:

// 创建一个包含5个int类型元素的数组
int[] numbers = new int[5];
// 创建一个包含10个double类型元素的数组
double[] scores = new double[10];
// 创建一个包含3个String类型元素的数组
String[] names = new String[3]; 

来自笔者的吐槽:还是js简单方便啊…

赋值与查询

那我如何给数组一些初始值呢?很简单:

String[] names = {"1","2","3"}; 

上述写法等同于

String[] names = new String[]{"1","2","3"}; 

数组的取值方法和js是一样的

public class Object_01 {
    public static void main(String[] args) {
        String names[] = {"1","2","3"};
        System.out.println(names[1]);  // 2
    }
}

改值方法也是一样的

public class Object_01 {
    public static void main(String[] args) {
        String names[] = {"1","2","3"};
        System.out.println(names[1]);  // 2
        names[1] = "6666";
        System.out.println(names[1]);  // 6666
    }
}

数组的长度

数组的长度可以通过数组对象的length属性来获取,这一点和前端数组的用法是一致的

示例代码:

public class Object_01 {
    public static void main(String[] args) {
       int[] numbers = {1,2,3,4,5};
       System.out.println(numbers.length);    // 5
    }
}

数组的遍历

可以使用循环结构来遍历数组中的所有元素,写法和前端几乎是一模一样的

示例代码:

public class Object_01 {
    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5};
        for (int i = 0;i<numbers.length;i++){
            System.out.println(numbers[i]);
        }
    }
}

运行结果

多维数组

Java中还支持多维数组,即数组中包含数组。

示例代码:

public class Object_01 {
    public static void main(String[] args) {
        int[][] numbers = {{1,2},{3,4}};
        System.out.println(numbers[1][1]); // 4
    }
}

数组中的一些常用方法:

length 属性

  • 用途:获取数组的长度,即数组中元素的个数。
  • 示例代码:
int[] numbers = {10, 20, 30, 40, 50};
int length = numbers.length;
System.out.println(length); // 输出:5

clone() 方法

  • 用途:创建并返回数组的副本。默认情况下,clone() 方法执行的是浅拷贝。如果需要实现深拷贝,需要在自定义类中重写该方法。
  • 示例代码:
int[] numbers = {10, 20, 30, 40, 50};
int[] clonedNumbers = numbers.clone();

toString() 方法

  • 用途:将数组转换为字符串表示形式。默认情况下,该方法返回数组的类名和哈希码的十六进制表示。
  • 示例代码:
public class Object_01 {
    public static void main(String[] args) {
       int[] numbers = {1,2,3};
        System.out.println(numbers.toString()); // [I@74a14482
    }
}

equals() 方法

  • 用途:用于判断两个数组是否相等。默认情况下,equals() 方法比较的是数组的引用是否相同(即是否指向同一个内存地址)。在比较数组中元素是否相等时,可以使用Arrays.equals() 方法。
  • 示例代码:
int[] numbers1 = {10, 20, 30};
int[] numbers2 = {10, 20, 30};
boolean areEqual = Arrays.equals(numbers1, numbers2);
System.out.println(areEqual); // 输出:true

来自老前端的疑问

数组可以动态更改长度吗?

不可以!数组不支持在已分配的内存空间之外添加数据。当你创建了一个固定大小的数组后,它的大小就不能改变了。如果你想要在数组中添加更多的元素,通常需要创建一个新的、更大的数组,然后将旧数组中的元素复制到新数组中。

数组里面的类型可以是任意的吗?

是的,数组的每一项可以是任何数据类型,包括对象。

// 在主类中使用Person类创建一个对象数组
public class  Main {
    public static void main(String[] args) {
        // 创建一个Person对象数组,包含两个元素
        Person[] people = new Person[2];

        // 初始化数组元素
        people[0] = new Person("Alice", 25);
        people[1] = new Person("Bob", 30);

        // 调用数组元素的printInfo方法输出信息
        people[0].printInfo();
        people[1].printInfo();
    }
}
// 定义一个Person类
class Person {
    String name;
    int age;

    // 构造函数
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 输出Person对象的姓名和年龄
    public void printInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

类似于前端的如下数组结构

[
  {name:"Alice",age:25},
  {name:"Bob",age:30}
]

其他

let relax = [
        {time:"9:00",do:"sleep"},
        {time:"12:00",do:"eat"}
] 

可以使用java中的数组实现吗?

在Java中,你不能直接使用数组来存储这样的数据结构,因为Java的数组是固定长度的,并且每个元素必须是相同类型。然而,你可以使用Java的集合类,如ArrayList或LinkedList,来存储这样的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

猫12分类:使用多线程爬取图片的Python程序

本文目标 对于猫12目标检测部分的数据集&#xff0c;采用网络爬虫来制作数据集。 在网络爬虫中&#xff0c;经常需要下载大量的图片。为了提高下载效率&#xff0c;可以使用多线程来并发地下载图片。本文将介绍如何使用Python编写一个多线程爬虫程序&#xff0c;用于爬取图片…

代码随想录 Day50 单调栈 LeetCodeT503 下一个最大元素II T42接雨水

前言 前面我们说到了单调栈的第一题,下一个最大元素I,其实今天的两道题都是对他的变种,知道第一个单调栈的思想能够想清楚,其实这道题是很简单的 考虑好三个状态,大于等于小于,其实对于前面这些题目只要细心的小伙伴就会发现其实小于和等于的处理是一样的都是直接入栈,只有大于…

记录一次较为完整的Jenkins发布流程

文章目录 1. Jenkins安装1.1 Jenkins Docker安装1.2 Jenkins apt-get install安装 2. 关联github/gitee服务与webhook2.1 配置ssh2.2 Jenkins关联2.3 WebHook 3. 前后端关联发布 1. Jenkins安装 1.1 Jenkins Docker安装 Docker很好&#xff0c;但是我没有玩明白如何使用Docke…

【并发编程】Synchronized原理详解

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

广州华锐互动VRAR | VR课件内容编辑器解决院校实践教学难题

VR课件内容编辑器由VR制作公司广州华锐互动开发&#xff0c;是一款专为虚拟现实教育领域设计的应用&#xff0c;它能够将传统的教学内容转化为沉浸式的三维体验。通过这款软件&#xff0c;教师可以轻松创建和编辑各种虚拟场景、模型和动画&#xff0c;以更生动、直观的方式展示…

.NET6使用MiniExcel根据数据源横向导出头部标题及数据

.NET6MiniExcel根据数据源横向导出头部标题 MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。 特点: 低内存耗用&#xff0c;避免OOM、频繁 Full GC 情况 支持即时操作每行数据 兼具搭配 LINQ 延迟查询特性&#xff0c;能办到低消耗、快速分页等复杂查询 轻量…

CommonModule.dll动态链接库(DLL)文件丢失的处理方法

方法一、手动下载修复 (1)从网站下载commonmodule.dll文件到您的电脑上。 (2)将commonmodule.dll文件复制到" X:\Windows\system32 " (X代表您系统所在目录盘符&#xff0c;如&#xff1a;C:\Windows\system32)目录下。 (3)在开始菜单中找到"运行(R)" 或…

数据结构--字符串的模式匹配

案例导入概念 朴素&#xff08;暴力&#xff09;模式匹配算法 定位操作&#xff1a; 计算时间复杂度 总结

解决 Python requests 库中 SSL 错误转换为 Timeouts 问题

解决 Python requests 库中 SSL 错误转换为 Timeouts 问题&#xff1a;理解和处理 SSL 错误的关键 在使用Python的requests库进行HTTPS请求时&#xff0c;可能会遇到SSL错误&#xff0c;这些错误包括但不限于证书不匹配、SSL层出现问题等。如果在requests库中设置verifyFalse&…

ES6有何新特性?(下篇)

目录 函数参数的默认值设置 rest参数 扩展运算符 Symbol 迭代器 生成器 Promise Class 数值扩展 对象方法扩展 模块化 大家好呀&#xff01;今天这篇文章继续为大家介绍ES6的新特性&#xff0c;上上上篇文章介绍了一部分&#xff0c;这篇文章会将剩下的部分新增的特…

ElasticSearch在Windows上的下载与安装

Elasticsearch是一个开源的分布式搜索和分析引擎&#xff0c;它可以帮助我们快速地搜索、分析和处理大量数据。Elasticsearch能够快速地处理结构化和非结构化数据&#xff0c;支持全文检索、地理位置搜索、自动补全、聚合分析等功能&#xff0c;能够承载各种类型的应用&#xf…

用平板当电脑副屏(spacedesk)双端分享

文章目录 1.准备工作2.操作流程1. 打开spacedesk点击2. 勾选USB Cable Android3. 用数据线连接移动端和pc端&#xff0c;选择仅充电4. 打开安装好的spacedesk 记得在win系统中设置扩展显示器&#xff1a; 1.准备工作 下载软件spacedesk Driver Console pc端&#xff1a; 移动…

uniapp小程序定位;解决调试可以,发布不行的问题

遇见这个问题&#xff1b;一般情况就两种 1、域名配置问题&#xff1b; 2、隐私协议问题 当然&#xff0c;如果你的微信小程序定位接口没开启&#xff1b;定位也会有问题&#xff1b; 第一种&#xff0c;小程序一般是腾讯地图&#xff1b;所以一般都会用https://apis.map.qq.co…

Android studio run 手机或者模拟器安装失败,但是生成了debug.apk

错误信息如下&#xff1a;Error Installation did not succeed. The application could not be installed&#xff1a;List of apks 出现中文乱码&#xff1b; 我首先尝试了打包&#xff0c;能正常安装&#xff0c;再次尝试了debug的安装包&#xff0c;也正常安装&#xff1…

LangChain 5易速鲜花内部问答系统

展示了一个完整的问答系统的实现&#xff0c;使用了Flask来构建Web界面、langchain进行文档处理和检索&#xff0c;以及OpenAI的语言模型。代码的复杂性在于集成了多种高级技术和处理大型数据集和语言模型。 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt t…

AVL树你需要了解一下

AVL树介绍 AVL树是一种自平衡二叉查找树&#xff0c;它得名于发明者G.M.Adel’son-Vel’skii和E.M.Landis。AVL树的特点是任何节点的两个子树的高度最大差别为1&#xff0c;因此它也被称为高度平衡树。在AVL树中&#xff0c;每个节点的平衡因子只有-1、0、1三种&#xff0c;通…

vue3 setup展示数据

效果图 1.创建数据 content.js import { reactive } from vueconst data reactive({color:red,title: 二十四节气,subTitle: 节气&#xff0c;是干支历中表示自然节律变化以及确立“十二月建”&#xff08;月令&#xff09;的特定节令。,list: [{name: "立春",con…

hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥

Java可以通过Hadoop提供的HDFS Java API来控制HDFS。通过HDFS Java API&#xff0c;可以实现对HDFS的文件操作&#xff0c;包括文件的创建、读取、写入、删除等操作。 具体来说&#xff0c;Java可以通过HDFS Java API来创建一个HDFS文件系统对象&#xff0c;然后使用该对象来进…

基于单片机GPS轨迹定位和里程统计系统

**单片机设计介绍&#xff0c; 基于单片机GPS轨迹定位和里程统计系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 一个基于单片机、GPS和里程计的轨迹定位和里程统计系统可以被设计成能够在移动的交通工具中精确定位车辆的位置…

clickhouse分布式之弹性扩缩容的故事

现状 社区不支持喔&#xff0c;以后也不会有了。曾经尝试过&#xff0c;难道是是太难了&#xff0c;无法实现吗&#xff1f;因为他们企业版支持了&#xff0c;可能是利益相关吧&#xff0c;谁知道呢&#xff0c;毕竟开源也要赚钱&#xff0c;谁乐意一直付出没有回报呢。 社区…