Java 语法基础 day-04 数组

news2024/9/22 1:17:29

一、一维数组的静态定义

public class array_1d {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        //下为数组的静态定义,定义时数组里的元素已然确定好
        String[] names = {"张三" , "李四" , "王五" , "赵六"};
        for(String name : names) {
            System.out.println(name);
        }
    }
}

tips:

1.for 循环的另一种用法:

for( 数据类型 小范围 : 大范围){

执行语句

}

相当于python中的for num in nums ,写成for(int num : nums)

2.访问数组的长度:直接array.length即可(访问字符串的长度也一样),根据索引访问数组元素跟python无异

二、一维数组的动态初始化

实现并不知道数据,只能使用动态初始化。

语法格式:数据类型[] 数组名字 = new 数据类型 [数组长度];

实际上,int数组的初始默认值为0;double数组初始默认值0.0;boolean数组初始默认值false。

//需求,存储八名学生的成绩
public class array_1d_dynamic {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        double[] scores = new double[8];
        for (int i=0 ; i <scores.length ; i++) {
            scores[i] = 2*i;
        }
        int a = (int) scores[5];
        System.out.println(scores[1]);
        System.out.println(a);
    }
}

三、二维数组

public class array_2d_stationary {
    public static void main(String[] args) {
        test1();
        test2();
    }
    public static void test1() {
        //1.静态初始化,生成一个4行3列矩阵二维数组里面的元素同样是数组
        int[][] stationary_array = {
                {1,2,3} , {4,5,6} , {7,8,9} , {10,11,12}
        };
        System.out.println(stationary_array[0][2]);
        System.out.println("---------------------");
    }
    // 2.动态初始化,生成一个全零的四行三列数组
    public static void test2() {
        int[][] array_dynamic = new int[4][3];
        for(int i = 0 ; i < 4; i ++){
            for(int j = 0 ; j < 3 ; j ++){
                array_dynamic[i][j] = 0;
            }
        }
        System.out.println(array_dynamic[0][2]);

    }
}

几个问题:(回答摘自gpt)

1.不能直接打印数组出来,像python那样吗?

在 Java 中,直接打印数组(如 System.out.println(array[0]);)会打印出数组的引用地址,而不是数组的内容。这是因为 Java 的数组没有重写 toString 方法,因此默认调用 Object 类的方法。

需要使用toString 或 deepToString方法

public class print_array {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        int[][] array = {
            {1,2,3},{4,5,6},{7,8,9}
        };
        System.out.println(Arrays.toString(array[1]));//对于一维数组
        System.out.println(Arrays.deepToString(array));//对于多维数组
    }
}

2.java中的数组,可以像python一样append吗?可以通过索引修改Java中数组的值吗?

在 Java 中,数组的行为与 Python 中的列表有所不同。以下是关于 Java 数组的一些关键点:

1. 数组的创建和大小

  • 固定大小: Java 中的数组在创建时大小是固定的,不能动态增加或减少。这意味着一旦定义了数组的大小,就无法像 Python 的列表那样使用 append() 方法添加元素。

    java

    复制
    int[] array = new int[5]; // 创建一个大小为 5 的整数数组
    

2. 修改数组元素

  • 通过索引修改: 在 Java 中,您可以通过索引直接修改数组中的元素。这与 Python 类似。

    java

    复制
    array[0] = 10; // 修改第一个元素的值
    

3. 替代 append 的方法

虽然 Java 数组本身不支持 append,但您可以使用以下方法来实现类似的功能:

  • 创建一个新的数组: 如果您想向数组添加元素,可以创建一个新的更大数组,并将旧数组的元素复制到新数组中。

    java

  • 复制
    int[] newArray = new int[array.length + 1];
    System.arraycopy(array, 0, newArray, 0, array.length);
    newArray[newArray.length - 1] = 20; // 添加新元素
    
  • 使用集合框架: 更常见的做法是使用 Java 的集合类,如 ArrayList,它提供了动态大小和 add() 方法来添加元素。

    java

    复制
    import java.util.ArrayList;
    
    ArrayList<Integer> list = new ArrayList<>();
    list.add(1); // 添加元素
    list.add(2);
    

示例代码

以下是一个简单的示例,展示了如何在 Java 中修改数组元素和使用 ArrayList 来实现动态添加:

java

复制

import java.util.ArrayList;

public class ArrayExample {
    public static void main(String[] args) {
        // 使用数组
        int[] array = new int[3];
        array[0] = 1;
        array[1] = 2;
        array[2] = 3;

        // 修改元素
        array[1] = 5; // 修改第二个元素
        System.out.println("Array after modification: ");
        for (int num : array) {
            System.out.print(num + " ");
        }
        
        // 使用 ArrayList
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1); // 添加元素
        list.add(2);
        list.add(3);
        
        // 添加新元素
        list.add(4);
        System.out.println("\nArrayList after adding an element: " + list);
    }
}

总结

  • 在 Java 中,数组的大小是固定的,不能像 Python 列表那样使用 append() 方法。
  • 可以通过索引直接修改 Java 数组的值。
  • 对于需要动态大小的情况,使用 ArrayList 是更合适的选择。

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

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

相关文章

黑群晖安装教程

黑群晖&#xff08;一种非官方的群晖NAS系统安装方式&#xff09;的安装教程相对复杂&#xff0c;但按照以下步骤操作&#xff0c;可以顺利完成安装。请注意&#xff0c;由于黑群晖涉及非官方操作&#xff0c;安装过程中可能遇到各种不确定因素&#xff0c;建议具备一定的计算机…

十四、运算放大电路

运算放大电路 1、理想运算放大器的概念。运放的输入端虚拟短路、虚拟断路之间的区别; 2、反相输入方式的运放电路的主要用途&#xff0c;以及输入电压与输出电压信号的相位 3、同相输入方式下的增益表达式(输入阻抗、输出阻抗)

英语<数词>

1.基数 one two three 整数 1 2 3 小数 1.1 2.2 3.2 分数 分子用基数&#xff0c;分母用序数 例子 1/3 one third 分子>1 2/3 two thirds 百分数 2.序数 first second

【软考】传输层协议TCP与UDP

目录 1. TCP1.1 说明1.2 三次握手 2. UDP3. 例题3.1 例题1 1. TCP 1.1 说明 1.TCP(Transmission Control Protocol&#xff0c;传输控制协议)是整个 TCP/IP 协议族中最重要的协议之一。2.它在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的…

[UTCTF2020]sstv

用goldwave和010editor打开均未发现线索&#xff0c; 网上搜索sstv&#xff0c;豆包回答如下&#xff1a; 慢扫描电视&#xff08;Slow Scan Television&#xff0c;简称 SSTV&#xff09;是一种通过无线电传输和接收静态图像的技术。 一、工作原理 SSTV 通过将图像逐行扫描并…

十九、石英晶体振荡电路

石英晶体振荡电路 1、石英晶体的特点、等效电路、特性曲线; 2、石英晶体振动器的特点&#xff0c; 3、石英晶体振动器的振荡频率

Vision Transformer (ViT)、Swin Transformer 和 Focal Transformer

1. Vision Transformer (ViT) Vision Transformer详解-CSDN博客https://blog.csdn.net/qq_37541097/article/details/118242600?ops_request_misc%257B%2522request%255Fid%2522%253A%2522F8BBAFBF-A4A1-4D38-9C0F-9A43B56AF6DB%2522%252C%2522scm%2522%253A%252220140713.13…

互联网全景消息(5)之RocketMq快速入门(下)

一、RocketMQ的存储设计 1.1 Domain Model 1.1.1 Message Message是RocketMQ消息引擎中的主体。messageId是全局唯一的。MessageKey是业务系统(生产者)生成的,所以如果要结合业务,可以使用MessageKey作为业务系统的唯一索引。 1.1.2 Topic subTopics==Message Queue,其实…

机器学习——Stacking

Stacking&#xff1a; 方法&#xff1a;训练多个模型(可以是强模型)&#xff0c;然后将这些模型的预测结果作为新的特征&#xff0c;输入到下一层新的模型&#xff08;可以是多个&#xff09;中进行训练&#xff0c;从而得到最终的预测结果。 代表&#xff1a;Stacking本身并没…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5&#xff08;HyperText Mark Language 5&#xff09;来屏蔽不同引擎&#xff0c;平台底层的差异。 好处&#xff1a; 采用H5的开发方式&#xff0c;可以将开发和运营分离&#xff0c;运营部门自…

新峰商城之订单(一):确认页面开发

新峰商城订单从生成到处理结束&#xff0c;主要以下几个流程&#xff1a; &#xff08;1&#xff09;提交订单&#xff08;商城用户发起&#xff09; &#xff08;2&#xff09;订单入库&#xff08;后台逻辑&#xff09; &#xff08;3&#xff09;支付订单&#xff08;商城…

人生小满胜万全

大家好,这里是大话硬件。 最近大家都在讨论房贷利率的问题,昨天晚上看到很多群里在发要降息的小道消息,但是今天早上看到央行发了通告不降息。 下午又在群里看到这个买房对比的截图。对于没买房的人来说,肯定在想,还好当时没有买啊。对于买了房的人来说,可能有些人也在想…

「漏洞复现」灵当CRM marketing/index.php SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

Isaac Sim 跑Slam学习过程2024.9.20

# 本文随着时间逐渐增加内容&#xff0c;是学习笔记 # 诶怎么今天Isaac Sim 4.2.0 突然出现了&#xff0c;这哪来的时间再去试试新的.... 没有大佬带...自己学吧 希望使用仿真环境跑定位Slam&#xff0c;现在IMU在Isaac Sim中有现成的传感器模块&#xff0c;GPS则没有&am…

电商ISV 电商SaaS 是什么

Independent Software Vendors的英文缩写&#xff0c;意为“独立软件开发商” 软件即服务(SaaS) 指一种基于云技术的软件交付模式 订阅收费 这些公司叫做ISV软件供应商&#xff0c;通过SaaS服务交付收费 为什么会有电商ISV 从商家角度划分&#xff1a;有独立品牌商家、大商…

MySQL篇(SQL优化)(持续更新迭代)

目录 一、插入数据&#xff1a;Insert 1. 优化方案一&#xff1a;批量插入数据 2. 优化方案二&#xff1a;手动控制事务 3. 优化方案三&#xff1a;主键顺序插入&#xff0c;性能要高于乱序插入 4. 大批量插入数据 5. 案例 5.1. 创建表结构 5.2. 设置参数 5.3. load加载…

计算机毕业设计 基于Python的校园个人闲置物品换购平台 闲置物品交易平台 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

Wireshark学习使用记录

wireshark 是一个非常好用的抓包工具&#xff0c;使用 wireshark 工具抓包分析&#xff0c;是学习网络编程必不可少的一项技能。 原理 Wireshark使用的环境大致分为两种:一种是电脑直连互联网的单机环境&#xff0c;另外一种就是应用比较多的互联网环境&#xff0c;也就是连接…

macOS 中搭建 Flutter 开发环境

如果你的 Mac 是 Apple silicon 处理器&#xff0c;那么有些 Flutter 组件就需要通过 Rosetta 2 来转换适配&#xff08;详情&#xff09;。要在 Apple silicon 处理器上运行所有 Flutter 组件&#xff0c;请运行以下指令来安装 Rosetta 2。 sudo softwareupdate --install-ro…

低代码可视化工具-uniapp页面跳转传参-代码生成器

uniapp页面跳转传参 在uni-app中&#xff0c;页面间的跳转和传参是一个常见的需求。uni-app提供了多种页面跳转方式&#xff0c;如uni.navigateTo、uni.redirectTo、uni.reLaunch、uni.switchTab、uni.navigateBack等&#xff0c;每种方式适用于不同的场景。以 页面跳转并传参…