Java基础快速入门:二维数组

Java小白入门200例27之Java二维数组的定义和使用 作者简介 作者名:编程界明世隐 简介:优快云博客专家,从事软件开发多年,精通Java、JavaScript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞! 引言 很多Java初学者问我,新手明明很用心、很努力学习的Java知识,转头又忘记了,很让人犯愁,小白如何能够快速成长、成为大牛呢? 其实要成为大神的技巧只有一个:“多学多练”,于是明哥就整理了比较典型的练习实例,通过练习能够快速提升编码技巧和熟练度,让你在成为大 阅读详情

本文纲要

  1. 二维数组概述
  2. 二维数组的动态初始化
  3. 二维数组访问元素的细节
  4. 二维数组的静态初始化
  5. 二维数组的遍历
  6. 二维数组求和

二维数组概述

二维数组本质上是一个容器,与一维数组不同的是,它内部存储的是一维数组(更准确地说,存储的是一维数组的引用)。可以把二维数组理解成一个“大容器”,里面装着多个“小容器”。

例如,有三个箱子分别装着啤酒,每个箱子就是一个一维数组;现在用一辆货车把这三个箱子一起运走,货车就相当于一个二维数组,它装载了三个一维数组。

应用场景:当一组数据需要按多个分组进行管理时,就很适合使用二维数组。例如,某公司按季度统计销售额,每个季度包含多个月份的数据,就可以用一个二维数组存储,其中每个一维数组代表一个季度的数据。

二维数组的动态初始化

1 ) 定义格式

数据类型[][] 数组名 = new 数据类型[m][n];

m:表示这个二维数组中可以存放多少个一维数组;
n:表示每个一维数组中可以存放多少个元素。

其他不太常用的写法:

数据类型 数组名[][] = new 数据类型[m][n];
数据类型[] 数组名[] = new 数据类型[m][n];

这三种写法都能创建二维数组,但第一种最常见。

示例

int[][] arr = new int[3][3];

上述代码创建了一个 int 类型的二维数组,可以存放 3 个一维数组,每个一维数组又可以存放 3 个 int 元素。

打印二维数组名

System.out.println(arr);  // 例如输出:[[I@10f87f48 
  • [[:中括号的数量代表数组的维度,两个中括号表示二维数组(一维数组为一个中括号);
  • I:表示数组中存储的元素类型为 int;
  • @:分隔符,无实际意义;
  • 10f87f48:十六进制内存地址。

动态初始化时的默认值

使用 new int[3][3] 动态初始化后,系统会自动为每个元素赋予默认值,int 类型的默认值为 0。以下代码可以验证:

System.out.println(arr[0][0]);  // 0
System.out.println(arr[1][1]);  // 0 
System.out.println(arr[2][2]);  // 0

访问与存储元素

访问二维数组中的元素需要使用两个索引:

arr[0][0] = 11;  // 存储到第1个一维数组的第1个位置
arr[1][2] = 33;  // 存储到第2个一维数组的第3个位置
System.out.println(arr[0][0]);  // 取出第1个一维数组的第1个元素

注意事项:如果只使用一个索引,例如 arr[0],获取到的是该位置的一维数组的内存地址,而不是具体的元素值。

System.out.println(arr[0]);  // 一维数组的地址,如 [I@...  (一个中括号)

因此,二维数组实际上存储的是每个一维数组的引用(内存地址)

二维数组访问元素的细节

能否存入提前创建好的一维数组?

可以。例如:

int[] arr1 = {11, 22, 33};
int[] arr2 = {44, 55, 66};
int[] arr3 = {77, 88, 99, 100};  // 注意该数组长度为4,超过了原定长度3
 
int[][] arr = new int[3][3];
 
arr[0] = arr1;
arr[1] = arr2;
arr[2] = arr3;  // 将 arr3 的引用赋给二维数组的第3个位置
 
System.out.println(arr[1][2]);  // 66 
System.out.println(arr[2][3]);  // 100,可以正常访问 

此时,arr[2] 原本指向一个长度为3的新数组,但被替换成了 arr3 的引用,因此现在 arr[2] 指向的是长度为4的数组。所以 arr[2][3] 可以正常访问,不会出现索引越界。
为什么这样不会报错,而直接赋值会报错?

如果直接使用传统方式:

arr[2][3] = 100;  // 数组索引越界异常 ArrayIndexOutOfBoundsException

动态初始化 new int[3][3] 时,JVM 会立即创建好三个长度为3的一维数组,并将它们的引用存入二维数组。此时 arr[2] 指向的数组长度固定为3,索引只能到2,因此访问索引3会越界。

而如果我们先定义好一个长度为4的数组,再通过 arr[2] = arr3 替换引用,arr[2] 就不再指向原来的长度为3的数组,而是指向新的长度为4的数组,因此可以访问索引3。

原理图(使用 Mermaid 演示内存引用替换):

堆内存

栈内存

索引0

索引1

索引2

arr[2] = arr3 后

二维数组 arr

一维数组 arr1

一维数组 arr2

一维数组 arr3

二维数组对象: 3个引用

一维数组对象: 长度3

一维数组对象: 长度3

一维数组对象: 长度3

一维数组 arr3: 长度4

最初,arr[2] 指向一个长度为3的对象;执行 arr[2] = arr3 后,arr[2] 改为指向 arr3 所指向的长度为4的对象,因此可以访问 arr[2][3]。

二维数组的静态初始化

完整格式

数据类型[][] 数组名 = new 数据类型[][]{{元素1, 元素2...}, {元素1, 元素2...}...};

简化格式(常用)

数据类型[][] 数组名 = {{元素1, 元素2...}, {元素1, 元素2...}...};

示例

int[][] arr = {{11, 22, 33}, {44, 55, 66}};
System.out.println(arr[0][2]);  // 33

也可以先创建好一维数组,再组合:

int[] arr1 = {11, 22, 33};
int[] arr2 = {44, 55, 66};
int[][] array = {arr1, arr2};
System.out.println(array[0][2]);  // 33

二维数组的遍历

需求:已知二维数组 arr = {{11, 22, 33}, {33, 44, 55}},遍历并取出所有元素。

步骤:

  1. 遍历二维数组,取出每一个一维数组;
  2. 对每个一维数组继续进行遍历,获取内部存储的每一个元素。

代码实现:

int[][] arr = {{11, 22, 33}, {33, 44, 55}};
 
// 外层循环:遍历二维数组,得到每一个一维数组 arr[i]
for (int i = 0; i < arr.length; i++) {
    // 内层循环:遍历当前一维数组,得到每一个元素
    for (int j = 0; j < arr[i].length; j++) {
        System.out.println(arr[i][j]);
    }
}

理解要点:arr[i] 是一个一维数组,arr[i].length 是该一维数组的长度,arr[i][j] 就是具体的元素值。

二维数组求和

1 )需求

某公司季度和月份统计数据如下(单位:万元),求全年总销售额。
第一季度:22, 66, 44
第二季度:77, 33, 88
第三季度:25, 45, 65
第四季度:11, 66, 99

2 ) 思路

  1. 定义求和变量 sum,初始化为 0;
  2. 使用二维数组存储数据,每个季度为一个一维数组,再将四个一维数组装入二维数组;
  3. 嵌套循环遍历二维数组,累加每个元素到 sum;
  4. 输出结果。

3 ) 代码实现

int sum = 0;
int[][] arr = {
    {22, 66, 44},
    {77, 33, 88},
    {25, 45, 65},
    {11, 66, 99}
};
 
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        sum += arr[i][j];
    }
}
 
System.out.println("全年总销售额:" + sum + "万元");  // 641

总结

二维数组是存储一维数组的容器,适合处理分组数据
动态初始化:new int[m][n],系统自动分配空间并赋予默认值,访问时使用两个索引
替换引用:arr[i] = existingArray 可以改变二维数组某位置指向的一维数组对象,从而突破原先的长度限制
静态初始化:使用 {{...}, {...}} 简化格式,直接在声明时赋值
遍历:嵌套循环,外层遍历二维数组,内层遍历每一个一维数组
求和:在遍历过程中累加即可

掌握这些内容,就可以游刃有余地使用二维数组解决实际问题了

【Dify系列教程重置精品版】第二章:在Windows上部署Dify 让我们的电脑允许使用Linux系统。有点兴奋是怎么回事?简单来说就是让你的电脑拥有另一个叫做Linux的系统。3.选择“适用于Linux的Windows子系统”与 “虚拟机平台”与“Hyper-V"第1章:安装 wsl (Windows Subsystem for Linux)上一章我们聊了什么是Dify,这一章我们讲一下怎么才能用Dify。好了,我们的环境部署好了,下一章我们正式进入Dify。下载完成后,我们直接一直无脑下一步,安装即可。完成上述步骤,我们就可以开始安装wsl了。我们的虚拟化也是开启的。 阅读详情

相关推荐

SIMetrix教程-001.SIMetrix软件简介与安装

  由于某些原因需要用到SIMetrix仿真软件,然而网上的资料并不是特别多,故在此记录一下这款仿真软件的学习过程,也给有需要的人提供一些参考,免走弯路。如果使用过Pspice或者LTspice软件,学习SIMetrix会很容易入门,仿真软件都是大同小异的,会一样后都可以快速入门其他软件。   SIMetrix是一款以SPICE模型为基础的仿真软件,集成了SIMetrix和SIMPLIS两款内核,为工程师提供了可靠的、易于使用的、并完美结合了速度与精度的电路仿真方式。官方的话不多说,和LTspice一样,优

gaoyong_wang的博客 2万+

【JAVA基础】由C++快速上手Java(超详细)

JavaSE基础课程涉及到的很多内容在学习C++的过程都有涉及,在这里做一个由C++基础开始学习java的快速入门经验总结。

2301_76391858的博客 2662

从零到一:移远EC200UCN_LA OpenCPU开发中的‘避坑’实战指南

本文详细介绍了移远EC200UCN_LA 4G通信模块的OpenCPU开发实战指南,涵盖开发环境搭建、项目构建、通信接口开发、调试技巧及固件升级等关键环节。通过避坑经验和实用技巧,帮助开发者高效完成二次开发,提升4G通信模块的应用开发效率。

weixin_29159711的博客 507

【Java数组】--快速掌握二维数组

在Java编程中,二维数组和多维数组是处理表格数据、矩阵运算、图像处理等复杂结构数据的重要工具。本文将像你介绍二维数组和多维数组,以及一些拓展帮助你快速理解。二维数组可以理解为一个表格,由行和列组成,或者看作是“数组的数组”。本质上是一维数组的数组,每个元素都是一个一维数组的引用。Java 数组作为最基础的容器类数据结构,是我们处理批量同类型数据的核心工具。

学生|学习笔记 欢迎讨论和指正 921

【obj To 3DTiles 进阶实战】 从零配置地理坐标系与扩展属性元数据

本文详细解析了如何将OBJ模型转换为3DTiles格式,重点介绍了地理坐标系配置与属性元数据扩展的实战技巧。通过obj23dtiles工具,开发者可以精准定位模型经纬高坐标,并添加结构化属性表,实现城市规划模型在数字孪生平台的高效应用。

weixin_27215337的博客 368

STC51单片机串口多字节数据接收的优化策略

本文深入探讨了STC51单片机串口多字节数据接收的优化策略。针对数据丢包、粘包等常见痛点,核心思路是采用“缓冲队列+定时器超时”模式,将实时处理转变为“先收纳,后处理”。文章详细讲解了硬件初始化、中断服务程序优化(快速入队与激活超时裁判)以及主循环的非阻塞设计,并进阶介绍了环形缓冲区实现与错误处理,旨在构建稳定可靠的串口通信系统。

weixin_29264201的博客 374

Java基础 二维数组、增强for循环、方法的调用、方法重载

Day05一、二维数组二、增强for循环三、方法1、方法的申明与调用2、方法重载四、总结 一、二维数组 二、增强for循环 如下图所示,创建一个整型数组,我们就是要遍历它。 java中增强for循环的使用(遍历数组和集合) 然后创建一个for循环,但是循环条件和普通for循环条件不同。 for(int num : a) 条件中首先定义一个变量整型变量num,这个变量类型的和数组存放的类型是...

qq_45451251的博客 2826

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

Java-基础入门-二维数组

一、题目 1.创建一个二维数组使用scanner与嵌套for循环接收元素赋值为以下: {{12,56,78},{99,102,11},{123,45,11}} 2.使用嵌套for循环遍历此数组 二、 package rgzn; import java.util.Scanner; public class chapter04 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[][] a

年少轻狂的博客 346

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

随着互联网和社交媒体的发展,用户评论成为了消费者表达自己意见和情感的主要途径之一。对于企业来说,深入了解用户对其产品或服务的看法可以帮助他们更好地了解市场需求、产品改进的方向,以及消费者的情感倾向。因此,对用户评论进行分析已经成为了市场研究和商业决策的重要手段之一。

m0_64336780的博客 1万+

Java二维数组基础

获取全部元素 在一维数组中直接使用数组的 length 属性获取数组元素的个数。而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。 如果要获取二维数组中的全部元素,最简单、最常用的办法就是使用 for 语句。在一维数组全部输出时,我们使用一层 for 循环,而二维数组要想全部输出,则使用嵌套 for 循环(2 层 for 循环)。 class test07 { public st

树下一朵云的博客 218

【软件系统架构】系列四:嵌入式技术

嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软硬件集成于一体的专用计算机系统。它需要满足功能、可靠性、成本、体积、功耗等方面的严格要求。 嵌入式系统一般由以下组成部分构成:

moton2017的博客 1001

java快速入门--数组,二维数组

数组 介绍:可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型,即:数组就是一组数据 package com.company.hello; import java.util.Scanner; /** * 数组快速入门 * * @author L.yn * @version 1.0 * @date 2021/11/21 9:21 */ public class ArrayTest { public static void main(String[] args) {

m0_46435451的博客 450

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java二维数组遍历

在这个例子中,我们通过 for循环来遍历二维数组,当遍历完所有元素后,我们使用了 sorted方法将该数组转换为一个新的集合: 对于这个新集合,我们要先判断它是否为空集合。遍历空集合可以通过下面两个步骤来实现: 在 Java中,判断数组中是否有元素有两种方法: (1)、使用“从上到下”和“从左到右”的方法来遍历数组,如果数组中有元素,则表示数组被遍历过了;我们使用 Java中的两种遍历方法来遍历空列表: 遍历空列表的代码如下: 第一个参数是一个空数组,第二个参数是一个包含已遍历空列表中元素的数组。

花生日记 5255

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java教程,9天快速掌握java基础,更适合小白学习的Java基础

还在找快速入门Java的教程?看这里! 9天快速掌握java基础,更适合小白学习的Java基础 本课程将会从零基础学员角度出发,带你9天快速掌握 Java 课程知识点编排循序渐进,能够将每一个知识点落地到实际案例 拒绝“听得懂、不会练、不会敲” 并在课程最后通过《学生管理系统》案例整合基础知识,巩固加深知识理解 9天快速掌握java基础,更适合小白学习的Java基础 http://yun.itheima.com/course/753.html?stt 课程大纲 第一阶段:Java基础语法

黑马程序员官方博客 635

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【愚公系列】Java教学课程 019-二维数组

数组是由相同类型的数据元素按一定顺序排列的集合,在许多编程语言中都有支持。数组通常用来存储同种类型的数据,例如整数、实数、字符串等,可以用数字下标访问其中的元素。数组的特点是占用一段连续的内存空间,可以快速地访问和修改其中的元素。在计算机科学中,数组是一种非常基础的数据结构,可以用来解决很多计算问题。在Java中,二维数组是一种特殊的数组类型,它是由多个一维数组组成的,每个一维数组又包含多个元素。其中,type表示数据类型,arrayName表示数组名称,row表示行数,col表示列数。

愚公智库 3万+

java二维数组赋值_java基础学习:数组的常用操作与基础二维数组用法、及基本数据类型和引用数据类型赋值的区别...

一、Arraysjdk中为了便于开发,给开发者提供了Arrays类,其中包含了很多数组的常用操作。例如快速输出、排序、查找等。1.数组的常用方法1.数组以字符串形式的输出,2.sort对数组排序(只能升序),3.填充数组(填充同一个值),4.equals(arr1,arr2) 判断两个数组是否相等。import java.util.Arrays;public class Test02{public...

weixin_29133151的博客 774

Java-入门指南(零基础入门)

第二章、数据类型及变量 标识符 关键字 数据类型 进制转换 ​提升转换不丢失精度;(type)var强制类型转换 变量 实例变量:在堆中。 静态变量:在方法区。 局部变量:在栈中。 以上三大变量中:局部变量永远都不会存在线程安全问题。堆和

qq_61673686的博客 1933

二维数组基础学习

二维数组基础学习

m0_75136040的博客 223

非零基础自学Java (老师:韩顺平) 第6章 数组、排序和查找 6.12 多维数组 - 二维数组 && 6.13 二维数组的使用

非零基础自学Java (老师:韩顺平) 第6章 数组、排序和查找 6.12 多维数组 - 二维数组 && 6.13 二维数组的使用

代码改变世界 306

Java 二维数组

比如:map[][] 是一个二维数组。由 map[0] 是一个含有两个元素的一维数组,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等的二维数组。[10,12,45,90],添加23后,数组为[10,12,23,45,90]int[][] y 或者 int[] y[] 或者 int y[][]1) 语法: 类型[][] 数组名=new 类型[大小][大小]2) 比如: int a[][]=new int[2][3]...

weixin_46665411的博客 530

java二维数组的和_Java编程基础——数组和二维数组

Java编程基础——数组和二维数组摘要:本文主要对数组和二维数组进行简要介绍。数组定义数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器。数组是一种引用类型,用于保存一组相同类型的数据。数组定义的类型可以为任意类型,意思是我们可以定义int类型的数组,也可以定义String类型的数组,或其他任何类型的数组。数组实际在内存的存储和基本类型不同,实际上是在堆中申请空间保存一组数,栈中只是...

weixin_31474035的博客 425

java基础之一维数组和二维数组

为什么使用数组? 1.什么是数组? 在Java学习中,我们把一组类型相同的数据称之为数组。当然,有的同学会问了,一个数组可以放数字汉字吗?答案肯定是不可以的,因为每种数据类型在内存空间中占据的大小不同,所以数组里面的成员一定要类型相同,切记切记! 数组的使用步骤: 1.声明数组 int[] a; 2.分配空间 a = new Int[5]; 3.赋值a[0]=3; 4.处理数据a[0]=a[0]*10; 以上的步骤是对数组基本的定义和简单的操作,当我们对数组操作熟练之后,可以采用边声明边赋值的方法,提高写代

mrhe_的博客 410

Java二维数组赋值

可以使用myArray [i] [j]访问数组中的任何元素,其中i表示行数,j表示列数。总的来说,二维数组在处理多维数据时具有优秀的表现,但是在处理大规模数据时需要考虑其内存占用和性能问题。需要注意的是,使用静态初始化时,可以省略第一个维度的长度,但不能省略第二个维度的长度。在内存中,二维数组是连续存储的,当二维数组的大小比较大时,可能会出现内存不足的情况。与一维数组一样,二维数组的元素只能是同一类型的数据,不支持异构数据结构。与一维数组一样,二维数组是固定长度的,这有助于提高代码的效率和可读性。

千锋教育 8096

第二十三章Java二维数组详解

而在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。在输出二维数组时,第一个 for 循环语句表示以行进行循环,第二个 for 循环语句表示以列进行循环,这样就实现了获取二维数组中每个元素的值的功能。

weixin_62458944的博客 3987
上一篇: Java基础快速入门:数组概念、定义格式与动态初始化详解
下一篇: Java基础快速入门: 方法详解
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值