当前位置: 首页 > 编程日记 > 正文

【Java学习笔记之五】java数组详解

数组

概念

同一种类型数据的集合。其实数组就是一个容器。

数组的好处

可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int[5];

格式2

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};

 

如果需要存储大量的数据,例如如果需要读取100个数,那么就需要定义100个变量,显然重复写100次代码,是没有太大意义的。如何解决这个问题,Java语言提供了数组(array)的数据结构,是一个容器可以存储相同数据类型的元素,可以将100个数存储到数组中。

1数组的概念

    同一种类型数据的集合。其实数组就是一个容器。运算的时候有很多数据参与运算,那么首先需要做的是什么.不是如何运算而是如何保存这些数据以便于后期的运算,那么数组就是一种用于存储数据的方式,能存数据的地方我们称之为容器,容器里装的东西就是数组的元素, 数组可以装任意类型的数据,虽然可以装任意类型的数据,但是定义好的数组只能装一种元素, 也就是数组一旦定义,那么里边存储的数据类型也就确定了。

2 数组的好处

    存数据和不存数据有什么区别吗?数组的最大好处就是能都给存储进来的元素自动进行编号. 注意编号是从0开始。方便操作这些数据。

例如 学生的编号,使用学号就可以找到对应的学生。

3数组的格式

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int[5]; 

案例:

需求: 想定义一个可以存储3个整数的容器

实现:

1声明数组变量

为了使用数组必须在程序中声明数组,并指定数组的元素类型

=左半部分:

    先写左边明确了元素类型 是int ,容器使用数组,那么如何来标识数组?.那么用一个特殊的符号[]中括号来表示。想要使用数组是需要给数组起一个名字的,那么我们在这里给这个数组起名字为x .接着跟上等号。

代码体现:  

int [] x 

注意:int x[] 也是一种创建数组的格式。推荐使用int [] x 的形式声明数组。

2创建数组

=右半部分:

要使用一个新的关键字.叫做new。new 用来在内存中产生一个容器实体,数据要存储是需要有空间的,存储很多数据的空间用new 操作符来开辟,new int[3]; 这个3是元素的个数。右边这部分就是在内存中定义了一个真实存在的数组,能存储3个元素。

new int[3] 做了两件事情,首先使用new int[3] 创建了一个数组,然后把这个数组的引用赋值给数组变量x。

 

int [] x=new int[3];

x 是什么类型?

任何一个变量都得有自己的数据类型。注意这个x 不是int 类型的 。int 代表的是容器里边元素的类型。那么x 是数组类型的。

数组是一种单独的数据类型。数据类型分为2大派,分为基本数据类型和引用数据类型。 第二大派是引用数据类型。那么大家现在已经接触到了引用数据类型三种当中的一种。就是数组类型 [] 中括号就代表数组。

4、int[] arr = new int[5];在内存中发生了什么? 

内存任何一个程序,运行的时候都需要在内存中开辟空间.int[] arr = new int[5]; 这个程序在内存中是什么样?这就涉及到了java虚拟机在执行程序时所开辟的空间,那么java开辟启动了多少空间呢?继续学习java的内存结构。

数组的定义

格式1:

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

示例:int[] arr = new int[5];

格式2:

元素类型[] 数组名 = new 元素类型[]{元素,元素,……};

int[] arr = new int[]{3,5,1,7};

int[] arr = {3,5,1,7};

注意:给数组分配空间时,必须指定数组能够存储的元素个数来确定数组大小。创建数组之后不能修改数组的大小。可以使用length 属性获取数组的大小。

遍历数组

数组初始化

数组的格式

int[] x = new int[3];

x[0] = 1;

x[1] = 2;

另一种定义:该形式可以直接明确数组的长度,以及数组中元素的内容

int[] x = { 1, 2, 3 };

 

int[] x=new int[]{1,2,3};

 

初始化方式1:不使用运算符new

int[] arr = { 1, 2, 3, 4, 5 };

int[] arr2 = new int[] { 1, 2, 3, 4, 5 };

初始化方式2:

int[] arr3=new int[3];

arr3[0]=1;

arr3[1]=5;

arr3[2]=6;

 

如果数组初始化中不使用运算符new。需要注意:下列写法是错误的。

int[] arr;

arr={1,2,3,4,5};

此时初始化数组,必须将声明,创建,初始化都放在一条语句中个,分开会产生语法错误。

所以只能如下写:

int[] arr={1,2,3,4,5};

 

数组遍历

public static void main(String[] args) {

int[] x = { 1, 2, 3 };

for (int y = 0; y < 3; y++) {

System.out.println(x[y]);

// System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

// 那么这就是数组的第一个常见操作.遍历

}

数组中有一个属性可以获取到数组中元素的个数,也就是数组的长度. 数组名.length

public static void main(String[] args) {

int[] x = { 1, 2, 3 };

for (int y = 0; y < x.length; y++) {

System.out.println(x[y]);

// System.out.println("x["+y+"]="+x[y]); 打印效果 x[0]=1;

// 那么这就是数组的第一个常见操作.遍历

}

 

数组的常见异常

数组中最常见的问题:

1. NullPointerException 空指针异常
原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。\


2. ArrayIndexOutOfBoundsException 索引值越界。
原因:访问了不存在的索引值。

一数组角标越界异常:,注意:数组的角标从0开始。

public static void main(String[] args) {

int[] x = { 1, 2, 3 };

System.out.println(x[3]);

//java.lang.ArrayIndexOutOfBoundsException

}

 

 

 

二 空指针异常:

public static void main(String[] args) {

int[] x = { 1, 2, 3 };

x = null;

System.out.println(x[1]);

// java.lang.NullPointerException

}

 

数组:

什么时候使用数组:当元素较多时为了方便操作这些数组,会先进行来临时存储,所使用的容器就是数组。

特点:

数组长度是固定的。

数组的内存分析





 二维数组

Arrays的使用

遍历: toString()    将数组的元素以字符串的形式返回

排序: sort()        将数组按照升序排列

查找: binarySearch()在指定数组中查找指定元素,返回元素的索引,如果没有找到返回(-插入点-1) 注意:使用查找的功能的时候,数组一定要先排序。

 

二维数组:实质就是存储是一维数组。

数组定义:

       数组类型[][] 数组名 = new 数组类型[一维数组的个数][每一个一维数组中元素的个数];



疑问: 为什么a.length = 3, a[0].length = 4?

数组的初始化:

静态初始化:

int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };

动态初始化:

转载于:https://www.cnblogs.com/ECJTUACM-873284962/p/7341396.html

相关文章:

参加Java培训需要注意什么

java编程语言对于零基础的同学来说&#xff0c;想要自学是非常困难的&#xff0c;因为java学习包含很多阶段&#xff0c;所以零基础的小白和初学者报java培训班学习是非常有必要的&#xff0c;下面小编就给大家详细的介绍一下参加Java培训需要注意什么? 参加Java培训需要注意什…

写得不错的几篇C/C++博客

转&#xff1a;http://blog.csdn.net/rubyzhudragon/category/562309.aspx 转载于:https://www.cnblogs.com/xinzhuangzi/archive/2010/08/22/4100543.html

股市币市:数据分析与交易所最新公告(20190228)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

优化webpack配置

happypack happypack可以加快rebuild的速度 在开发的时候&#xff0c;需要将babel-loader替换成happypack/loader{test: /\.(js|jsx)$/,exclude: /(node_modules|vendor)/,loader: isDev ? happypack/loader : babel-loader } 同时添加插件, 根据需要定义不同的babel配置&…

Java多线程学习处理高并发问题

在程序的应用程序中&#xff0c;用户或请求的数量达到一定数量&#xff0c;并且无法避免并发请求.由于对接口的每次调用都必须在返回时终止&#xff0c;因此&#xff0c;如果接口的业务相对复杂&#xff0c;则可能会有多个用户.调用接口时&#xff0c;该用户将冻结. 以下内容将…

防止表单多次提交

防止表单多次提交 //jQuery①<script type"text/javascript"> $("input:submit").each(function() { var srcclick $(this).attr("onclick"); if(typeof(srcclick)"function"){ $(this).click(function() { if (srcclick()) { …

Visual Studio环境变量使用实例:使用环境变量来组织project

前言 在前一篇文章Visual Studio中的环境变量(以Visual Studio 2013为例)中介绍了VS中的环境变量&#xff0c;本文将以实际样例说明怎样合理使用这些环境变量来组织VCproject。使用vs环境变量来组织project 通常一个解决方式包括多个项目。这些项目相互之间可能存在依赖关系。以…

股市币市:数据分析与交易所最新公告(20190301)

沪深300 1. 沪深300分位数数据 2. 沪深300股指图 3. 沪深300分位数图 4. 沪深300筹码分布图 数据来源&#xff1a; https://finance.sina.com.cn/stock/ BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https…

Python常用6个技术网站汇总分享!

Python是一门面向对象的编程语言&#xff0c;它具有丰富和强大的库&#xff0c;能够把用其他语言编写的各种模块轻松地联结在一起&#xff0c;因此也常被称为“胶水语言”。Python技术会随着互联网的不断发展一直迭代和更新&#xff0c;所以需要Python开发的人员一直保持一个学…

devstack —— 单机部署 OpenStack 体验

2019独角兽企业重金招聘Python工程师标准>>> devstack 是一个用来快速部署 OpenStack 的脚本。 使用非常简单&#xff0c;执行 ./stack.sh 即可&#xff0c;但是在安装过程中遇到一些问题会中断&#xff0c;通过不断修正尝试&#xff0c;事后在这里记录一下&#xf…

使用ultraedit和cl编译器打造简易c/c++开发环境

在visual c下&#xff0c;每编写一个简单的小程序&#xff0c;就得生成一大串中间文件&#xff0c;另人十分的不爽。下面提供一个新的编写c/c程序的方法&#xff1a;   &#xff08;1&#xff09;&#xff0c;下载utraledit-32编辑器&#xff0c;推荐v11.  &#xff08;2&a…

股市币市:数据分析与交易所最新公告(20190302)

BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https://coinmarketcap.com/currencies/bitcoin/ 数字货币交易所公告 BigOne 2019/03/01 BigONE 用户体验月&#xff1a;有奖寻建议 &#xff0c;重金找 BUG …

分享五款java学习辅助工具,总有你用的上的~

想要学好java技术&#xff0c;除了自身的努力&#xff0c;辅助工具也不缺少&#xff0c;辅助工具可以帮助大家在今后的工作中可以提高工作效率&#xff0c;下面小编就来分享五款java学习辅助工具&#xff0c;总有你用的上的~ 五款java学习辅助工具&#xff1a; 1、Eclipse Ecli…

如何利用 C# 爬取「猫眼电影专业版:票房」数据!

在现代生活中&#xff0c;看电影已经成为大家的一种休闲方式。 前几天&#xff0c;我们介绍了 如何利用 C# 爬取「猫眼电影&#xff1a;热映口碑榜」及对应影片信息&#xff01;&#xff0c;通过这份“热映口碑”榜单&#xff0c;我们可以看到大家对当前热播电影的评价&#x…

MOSS的CSS样式说明,一个老外总结的

MOSS的CSS样式说明&#xff0c;一个老外总结的 http://www.heathersolomon.com/content/sp07cssreference.htm 转载于:https://www.cnblogs.com/greeny/archive/2010/09/03/1817027.html

什么是整型?Python整型详细介绍

整数类型(int)简称整型&#xff0c;它用于表示整数&#xff0c;例如&#xff0c;100、2016等。整型字面值的表示方式有四种&#xff0c;分别是十进制、二进制(以“0B”或“0b”开头)、八进制(以数字“0”开头)和十六进制(以“0x”或“0X”开头)。 Python的整型可以表示的范围是…

hibernate.hbm2ddl.auto的value

Hibernate 配置参数hibernate.hbm2ddl.auto Hibernate中的配置文件&#xff1a; <properties> <property name"hibernate.hbm2ddl.auto" value"create" /> </properties> 参数说明&#xff1a; validate 加载hibernate时…

linux的管道

1 管道的本质是进程间通信的一种手段 这个命名是非常形象的&#xff0c;数据从管道的一端流向管道的另外一端&#xff0c;然后另外一个进程等在那里&#xff0c;只要有数据了就进行处理。 2 管道连接的多个命令是同时启动的 也就是说&#xff0c;管道连接的多个命令的进程之间是…

股市币市:数据分析与交易所最新公告(20190303)

BTC比特币 1. 比特币分位数数据 2. 比特币交易图 3. 比特币分位数图 4. 比特币筹码分布图 数据来源&#xff1a; https://coinmarketcap.com/currencies/bitcoin/ 产品进程 赚钱是刚需&#xff0c;如何正确的交易股票&#xff1f;「股票数据分析软件」的开发&#xff08;上&…

零基础怎么学习web前端开发

零基础怎么学习web前端开发?web前端在移动互联网行业的运用是非常广泛的&#xff0c;而且web前端开发技术所涵盖的知识有很多&#xff0c;具体要怎么学习&#xff0c;来看看小编下面的详细介绍吧。 零基础怎么学习web前端开发?对零基础学员来说&#xff0c; web前端要学习的知…

【DocFX文档翻译】DocFX 入门 (Getting Started with DocFX)

DocFX 入门 1. DocFX 是什么&#xff1f; DocFX 是一个基于.NET的API文档生成器&#xff0c;当前支持 C# 和 VB。 它可以通过你的代码中的三斜杠注释生成 API 参考文档。同样也支持你使用 Markdown 文件创建一些其他的主题文档&#xff08;例如&#xff1a;教程以及使用手册&am…

在Ubuntu上安装Snort入侵检测系统。

转载于:https://www.cnblogs.com/onlyzq/archive/2010/09/10/1823079.html

一份来自山东院校的考研调剂系统已开放名单!

距离 19 考研初试成绩的公布已经有一段时间了&#xff0c;成绩不错的同学就安心准备复试吧&#xff0c;全力备考&#xff0c;一定要拿到属于你的录取通知书&#xff01;成绩不满意&#xff0c;擦线或者排名靠后的同学&#xff0c;复试、调剂两手准备&#xff0c;注定咱们要花更…

适合初学者学java技术的书籍推荐!

想要学会java技术&#xff0c;光靠听课是不够的&#xff0c;看书也是非常重要的一步&#xff0c;以下小编为大家推荐的是适合初学者学java技术的书籍&#xff0c;希望能够给初学者们带来帮助。 适合初学者学java技术的书籍推荐! 1. Java编程思想(第4版) 本书赢得了全球程序员的…

ref和out的区别

ref和out的区别在C# 中&#xff0c;既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值&#xff0c;并保持该更改。若要通过引用传递参数&#xff0c; 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效&#xff0c;其作用也很像C中…

如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!

前段时间我们介绍了如何利用 C# 语言来爬取“京东 - 计算机与互联网图书销量榜” 网页的方法&#xff0c;通过该方法&#xff0c;我们能够获得“京东”的图书销售排行榜数据。 可是&#xff0c;读书相当于给我们的大脑喂料&#xff0c;只有输入的是精华&#xff0c;才会有更好…

【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题

foreach语句使用总结增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. part3当然还是循环体. foreach语句是java5的新特征之一&#xff0c;在遍历数组、集合方面&…

参加软件测试培训需要学什么技术

软件测试这项技术在几年可谓是风头正盛&#xff0c;很多人都想要跳槽到这个行业&#xff0c;那么就需要学会软件测试技术&#xff0c;那么目前参加软件测试培训需要学什么技术呢?来看看下面的详细介绍吧。 参加软件测试培训需要学什么技术? 每个软件在上线之前都离不开重重测…

程序集和应用程序域

这两个概念是DotNet程序员经常见到的&#xff0c;但好多人搞不清它们。虽然MSDN对它们有相关的说明&#xff0c;但并不是那么容易看懂。在这里灰灰虫根据自己的理解用简单易懂的语言解绍一下它们。程序集(assembly) “程序集是包含编译好的、面向.NET Framework的代码的逻辑…

股市币市:数据分析与交易所最新公告

投资原则&#xff1a; 极端牛市是攒钱的时候&#xff08;分位数达到100&#xff09;&#xff0c;极端熊市是攒票的时候&#xff08;分位数低于40%&#xff09;&#xff0c;股指已经屡创新高&#xff0c;你再不攒钱就不对了&#xff0c;同理&#xff0c;股指屡创新低&#xff0c…