Java 数组

数组

1.数组类型:

      保存一组其他类型的数据,元素类型(Element type)

        int[]       double[]

        int[] intArray

    和C语言兼容的方式: int intArray[]...   规则允许,规范不建议使用

2.数组的初始化(数组的长度固定)

        1>静态的方式    用到已知数组所有的元素

             Java:   int[] array={1,2,3,4,5};       int[] array=new int[]{1,2,3,4,5};(更多用在匿名数组)

            C++: int array[5]={1,2,3,4,5};   

        2>动态的方式

            JAVA: int[] array=new int[数组的长度];

            C++:     int*array=new int[5]{1,2,3,4,5};    int*array=new int[5]

        3>不初始化数组,制定一个null字面量

            int[] array=null;      null是空引用

 

3.数组的下标访问,用中括号[]指定具体的下标

        1>下标的类型一定是int

        2>下标的取值范围,数组的长度是N个,则[0,N-1]

                 和C语言的区别:如果越界,C语言在运行期间出错,JAVA将会抛异常

4.数组本质上其实也是对象(Object类的派生类)

        1>属性

                int[] array=...;

                array.length      数组的长度

        2>方法

    数组本质上是引用类型,是对象,和基本数据类型有很大区别

理解引用背后的内存模型:

        1.引用类型和基本数据类型的差别

                    基本类型:int  a=100

                     引用类型:int[] array={1,2,3,4}

                                                     

        2.Java粗略的吧内存分为栈(stack)和堆(heap)

                栈上:局部变量  形参

                堆上:对象(数组的对象)

                无论引用变量保存在堆上或者栈上,背后的数据(对象)一定是堆上

        3.方法调用过程中 ,无论是基本数据类型还是引用数据类型

                  实参到形参都是值传递(形参改变不影响实参),在栈里拷贝了一份

                    但引用传递,如果更改的是对象内部的值,则实参可以感受到变化

        4.调用栈的过程

                    注意:局部变量 形参 实参   生命周期  作用域

         5.int a=100

                =左边是空间

                =右边是值

 

数组常用的方法:

        import java.util.Arrays;//引用包

            Arrays需要util.Arrays包

            1.toString(数组)  打印

            2.copyOf(数组,数组长度)     复制一份数组

                                数组长度<=数组的长度    直接拷贝

                                数组长度>数组的长度    后面添加0

                int[] a={1,2}; int[] b=Arrays.copyOf(a)    此时a,b互不影响

                int[] a={1,2}; int[] b=a;   此时a,b互相影响

                System.arraycopy(原数组,开始下标,目标数组,开始下标)

                    目标数组需要先申请好空间

            3.copyOfRage(原数组,from,to)  [)

            4.sort | parallelSort      排序

            5.fill   填充

注意:N维数组

C,C++中:由一个个“n-1维数组”组成,并且此时长度一样长,并且内存连续

    JAVA:数组保存数组的数组,并且数组中每个元素“数组”的长度可以不一样

                

内容概要:本文介绍了基于SMA-BP黏菌优化算法优化反向传播神经网络(BP)进行多变量回归预测的项目实例。项目旨在通过SMA优化BP神经网络的权重和阈值,解决BP神经网络易陷入局部最优、收敛速度慢及参数调优困难等问题。SMA算法模拟黏菌寻找食物的行为,具备优秀的全局搜索能力,能有效提高模型的预测准确性和训练效率。项目涵盖了数据预处理、模型设计、算法实现、性能验证等环节,适用于多变量非线性数据的建模和预测。; 适合人群:具备一定机器学习基础,特别是对神经网络和优化算法有一定了解的研发人员、数据科学家和研究人员。; 使用场景及目标:① 提升多变量回归模型的预测准确性,特别是在工业过程控制、金融风险管理等领域;② 加速神经网络训练过程,减少迭代次数和训练时间;③ 提高模型的稳定性和泛化能力,确保模型在不同数据集上均能保持良好表现;④ 推动智能优化算法与深度学习的融合创新,促进多领域复杂数据分析能力的提升。; 其他说明:项目采用Python实现,包含详细的代码示例和注释,便于理解和二次开发。模型架构由数据预处理模块、基于SMA优化的BP神经网络训练模块以及模型预测与评估模块组成,各模块接口清晰,便于扩展和维护。此外,项目还提供了多种评价指标和可视化分析方法,确保实验结果科学可信。
### Java数组的使用方法 Java中的数组是一种基本的数据结构,用于存储固定大小的相同类型元素。数组的创建和使用在Java中有多种方式,以下是一些常见的操作方法和示例。 #### 创建数组Java中,数组的创建方式主要有以下几种: - **指定大小创建数组**: ```java int[] numbers = new int[5]; // 创建一个长度为5的整型数组 ``` - **初始化数组并赋值**: ```java int[] numbers = new int[]{1, 2, 3, 4, 5}; // 创建并初始化一个整型数组 ``` - **简化方式创建并初始化数组**: ```java int[] numbers = {1, 2, 3, 4, 5}; // 简化方式创建并初始化数组 ``` #### 访问数组元素 数组的索引从0开始,可以通过索引来访问数组中的元素: ```java int[] numbers = {1, 2, 3, 4, 5}; System.out.println(numbers[0]); // 输出第一个元素,即1 ``` #### 修改数组元素 通过索引可以直接修改数组中的元素: ```java int[] numbers = {1, 2, 3, 4, 5}; numbers[0] = 10; // 将第一个元素修改为10 System.out.println(numbers[0]); // 输出10 ``` #### 遍历数组 可以使用循环来遍历数组中的所有元素: ```java int[] numbers = {1, 2, 3, 4, 5}; for (int i = 0; i < numbers.length; i++) { System.out.println(numbers[i]); } ``` #### 数组排序 Java提供了`Arrays.sort()`方法来对数组进行排序。该方法使用快速排序算法对数组进行排序: ```java import java.util.Arrays; int[] numbers = {4, 2, 9, 1, 5, 6}; Arrays.sort(numbers); // 对数组进行排序 System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 4, 5, 6, 9] ``` #### 多维数组 Java中也支持多维数组,最常见的是二维数组: ```java int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // 访问二维数组中的元素 System.out.println(matrix[0][1]); // 输出2 ``` #### 示例代码:创建、修改和排序数组 以下是一个完整的示例代码,展示了如何创建数组、修改元素、遍历数组以及对数组进行排序: ```java import java.util.Arrays; public class ArrayExample { public static void main(String[] args) { // 创建并初始化数组 int[] numbers = {5, 3, 8, 1, 2}; // 修改数组元素 numbers[0] = 10; // 遍历数组 System.out.println("修改后的数组:"); for (int num : numbers) { System.out.print(num + " "); } // 对数组进行排序 Arrays.sort(numbers); System.out.println("\n排序后的数组:" + Arrays.toString(numbers)); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值