今天,我们将要谈到的是Java里的数组

数组是一种容器,它是一些相同类型元素的集合。我们可以用数组,去存储一些相同类型的数据,比如,整数,浮点数,字符,...事实上,数组甚至可以用来存储同一个类的多个对象。由此可见其功能的强大。

我们从最简单的数组开始。一维数组是一种线性的数据结构。在Java里面,定义一个一维数组的格式有三种:

1)、数据类型 []数组名=new 数据类型[数组长度]

2)、数据类型 []数组名={数据,...}

3)、数据类型 []数组名=new 数据类型[]{数据,...}

给出定义三个数组的代码如下:

int、char、String是数据类型,[]表示数组,abc是数组名。

对于一个数组,它只有一个属性length,即数组的长度。我们可以用 数组名.length去获取数组的长度。对于数组里某个位置的元素,我们可以用 数组名[下标]的方式去访问或者设置具体值。

二维数组较之一维数组有一定区别。定义一个二维数组的方式也有三种:

1)、数据类型 [][]数组名=new 数据类型[行][列]

2)、数据类型 [][]数组名={{数据,...},...}

3)、数据类型 [][]数组名=new 数据类型[][]{{数据,...},...}

给出三种定义方式的代码如下:

一维数组中的数据,它的内存是线性分配的。也就是说,一维数组内数据的内存是相连的。二维数组与一维数组不一样,二维数组是不是一种线性的数据结构,它是多个线性数据结构的组合。我们可以用 数组名.length去访问这个二维数组有多少行,用 数组名[行下标].length的方式,去访问这个二维数组某行有多少列。这里注意一下,对于第一种定义二维数组的方式,得到的是一个规则的二维数组。但如果你直接给二维数组赋初值的话,那么得到的不一定是一个规则的二维数组。如下:

其输出结果是:

因此,当你定义一个二维数组的时候,你必须要更关注数组越界的问题,以防报错。

除此之外,注意对于一个二维数组a,加入你去访问a[行],那么输出的将是该行的首地址。因此,当你要对二维数组某个位置的元素进行访问和赋值的时候,必须给定具体的行和列的值。

关于更高维度的数组这里就不一一列举了,有兴趣的可以深入探究一下。

个人关于数组的见解就这么多,主要是要灵活运用到我们的代码当中去,简化我们的程序。如果各位大神有什么可以补充的,欢迎评论,有什么问题,希望大家能大方指正出来。

关于Java数组的更多相关文章

  1. Java 数组

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素. 你可以声明一个数组变量,如numbers[100 ...

  2. 第5章 Java数组

    1.什么是数组 数组可以想象成一个巨大的盒子,这个盒子里面存放的是同一个数据类型的数据 例如:int[] scores = {78,68,94,93}; 2.如何使用Java中的数组 2.1申明数组 ...

  3. Java 数组基础

    数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...

  4. Java数组及其内存分配

    几乎所有的程序设计语言都支持数组.Java也不例外.当我们需要多个类型相同的变量的时候,就考虑定义一个数组.在Java中,数组变量是引用类型的变量,同时因为Java是典型的静态语言,因此它的数组也是静 ...

  5. [转载]Java数组扩容算法及Java对它的应用

    原文链接:http://www.cnblogs.com/gw811/archive/2012/10/07/2714252.html Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组 ...

  6. Java数组技巧攻略

      Java数组技巧攻略 0.  声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {" ...

  7. Java数组扩容算法及Java对它的应用

    1)Java数组对象的大小是固定不变的,数组对象是不可扩容的.利用数组复制方法可以变通的实现数组扩容.System.arraycopy()可以复制数组.Arrays.copyOf()可以简便的创建数组 ...

  8. Java数组与vector互转

    Java数组与vector互转 /* Object[] object1 = null ; //数组定义 Vector<Object> object2;//Vector定义 object2 ...

  9. 比较Java数组,ArrayList,LinkedList,Vector 性能比较

    public class PerformanceTester { public static final int TIMES=100000; public static abstract class ...

  10. Java数组的12个常用方法

    以下是12个关于Java数组最常用的方法,它们是stackoverflow得票最高的问题. 声明一个数组 String[] aArray = new String[5]; String[] bArra ...

随机推荐

  1. SQL Azure (16) 创建PaaS SQL Azure V12数据库

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 最新的Azure PaaS SQL Database(SQL Azu ...

  2. 未找到与约束 ContractName Microsoft.VisualStudio.Text.ITextBufferFactoryService RequiredTypeIdentity Microsoft.VisualStudio.Text.ITextBufferFactoryService

    问题:vs2013在装了 之后,重启,打开VS提示: 未找到与约束 ContractName Microsoft.VisualStudio.Text.ITextBufferFactoryService ...

  3. Birt报表存储过程多选参数的设置

    Birt对存储过程的操作是很简单的一行语句,只需要在Data Set中写上类似这样 {call CAMPAIGN_REAL_TIME_MONITOR(?,?)} 如下图 本报表是存在两个参数,一个允许 ...

  4. 【转】批量复制操作(SqlBulkCopy)的出错处理:事务提交、回滚

    原文地址:http://blog.csdn.net/westsource/article/details/6658109 默认情况下,批量复制操作作为独立的操作执行. 批量复制操作以非事务性方式发生, ...

  5. java面试知识(来自牛客网)

    接口和抽象类的区别是什么? 接口和抽象类的区别是什么? Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的.而抽象类则可以同时包含抽象和非抽象的方法. ...

  6. 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  7. ASP.NET MVC之下拉框绑定四种方式(十)

    前言 上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC ...

  8. Android自定义属性

    上一篇讲解了Android自定义View,这篇来讲解一下Android自定义属性的使用,让你get新技能.希望我的分享能帮助到大家. 做Android布局是件很享受的事,这得益于他良好的xml方式.使 ...

  9. SubSonic3.0.0.4.3源码包与调用Dll

    版本修改历史 3.0.0.4.3版修复了下面问题: 修正多表关联查询时,使用左关联和右关联出错问题修正DbDataProvider.cs类的ToEnumerable函数打开数据库链接后没有关闭的问题添 ...

  10. Rust初步(六):在C#中使用Rust组件

    上一篇文章,我们通过实例比较了一下C#和Rust的性能表现,应该说在Release模式下面,Rust进行计算密集型的运算还是有些比较明显的优势的.那么,我们有没有可能,在C#中做一些快速应用开发,而一 ...