前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >猿进化系列4——超速进化,一发入魂

猿进化系列4——超速进化,一发入魂

作者头像
山旮旯的胖子
发布2020-07-28 16:37:33
5320
发布2020-07-28 16:37:33
举报
文章被收录于专栏:猿人工厂猿人工厂

看完上一个章节,相信你已经掌握了程序设计的基本语句——成功的长出了猴毛了!不要小看这一点点猴毛噢,你以后的猿类生涯,这些最基础的毛毛要陪伴你渡过漫长的岁月——

今天我们要在猿人的道路上再次迈出一大步,希望看完这篇文章,刚刚长出绒毛的你,只要get到要点,从此课开始,你的猿人生涯

容器

数组

骚年,现在搞懂容器的概念了吧?容器就是用于存放多个数据的一种结构,像这样的结构我们之后的学习中,还会遇到很多。接下来准备接收猿类的灵魂——数组。

所谓数组,就是一个长度固定的容器,是一个固定长度的元素序列,在java程序中,还必须保证容器中的元素都具备相同的数据类型。

创建数组

我们先看下面这段代码:

int a[];

a= new int[5];

在java中[]表示数组,int a[]; 声明了一个int类型的数组,数组名也就是我们的变量名a.

此时,数组只是做了一个声明,并没被有分配内存空间。

什么是申明?你可以简单的理解为定义了一个变量,没给这个变量赋值。

a=new int[5];

我们使用关键字 new创建了一个长度为5的数组。int后面的5代表数组的长度是5,意味着我们的素组可以存放5个数据。

我们再看下面这个代码:

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

我们也可以直接定义一个数组,使用大括号初始化数组,直接将数字1,2,3,4,5存放在了数组b中。

划重点!!!数组里的数据类型,不仅仅是int噢,它可以是任意类型的,比如

String strs[]={"1","2","3","4","5"};

就是字符串类型的数组,长度是5!存放了"1","2","3","4","5"共5个字符串!

悄悄的告诉你,以后你会慢慢发现,数组里存放的其实是薛定谔的猫!

数组的访问

我们已经学会了数组的声明和创建,但是我们怎样才能使用数组呢?在这之前,你需要了解一个新的概念——下标。

下标:数组中的每一个元素都有一个编号,也叫下标,我们访问数组内的数据,就是通过下标来访问的,每一个数组的下标都是从0开始的。

数组的长度属性:每一个数组的长度都是固定的,在java中每一个素组都有一个length属性表示数组的长度,我们可以通过数组名.length的方式来获取数组的长度。有一个数组最后一个元素的下标是多少?认真看后面有答案。

我们看下面这个例子:

数组在内存中的存储

数组中的元素存储在一个连续性的内存块中的。数组的变量名,其实存储的就是数组的内存地址。

我们看下面这段代码:

程序输出了两个

[I@4554617c

[I@4554617c

[I@4554617c就是数组的内存地址(每台机器的输出的值不一定一样,但是这样会输出两个相同的值)。

我们再看看下面这段代码:

我们重新申明了一个数组c,将数组b指向数组a,然后改变数组b中元素的值,最后数组c中的元素会改变吗?

想知道答案吗?

重要的事情说3遍,自己敲代码!!!自己敲代码!!!自己敲代码!!!

搞明白这个,你就get到一点儿数组存储的灵魂了!

数组遍历

接下来,我们讲讲数组的遍历,数组的遍历其实就是通过下标访问数组中的每一个元素。取名叫遍历可能是为了让小白们更快的从入门到放弃吧。

这个其实在之前的代码中我们已经做到过了,下面直接放出代码:

for(int i=0;i<a.length;i++){

a[i]=i;

System.out.println(a[i]);

}

告诉你一个小秘密:“数组的下标从0开始,在几乎所有的语言中每一个数组都有一个length属性表示数组的长度,最后一个下标就是length-1了!

所以遍历数组嘛,so easy!

数组越界

我们看下面一段代码:

运行一下,程序,控制台出现了下面一段话:

Exceptionin thread "main" java.lang.ArrayIndexOutOfBoundsException: 6

最后的那行代码能正常输出吗?

想知道答案吗?还是那句话,敲代码!!!

数组空指针

我们再看下面一段代码:

运行一下,控制台会出现下面一段话:

Exceptionin thread "main" java.lang.NullPointerException

这就是空指针异常!因为数组b的引用指向了null,数组并没有元素可以访问,但是程序访问了数组b的第一个元素,程序异常退出了,所以我们在使用数组的时候一定要注意,搞出空指针。

至于完整的输出是啥,上一小节,你敲了代码,自己应该猜得到!!!

数组元素查找

下面我们来处理一个实际性的问题——编写一个方法,把数组a中的最大元素找出来。

之前我们已经访问过数组的每一个元素了,现在要找最大元素还不简单?定义一个变量将最大的元素存起来返回不就好了。

我们默认第一个元素最大,用一个变量存起来,访问后续变量遇到比变量里的值大的,改变变量的值就好。

注意为啥是length-1?

还有没有其他的办法?

代码是给你了,记得敲一遍噢。课后还有小练习,不要忘记噢。

数组反转

我们再来做一个小练习——数组的反转:将数组里存放的元素顺序反转过来。

比如int a={1,2,3,4,5}那边反转后就是{5,4,3,2,1}

代码可以给你,好好的看看,但是想要使用嘛,还是自己敲代码吧。

小思考:

思考下还有没有其他实现方式?

课后小练习:

编写一个方法,遍历输出数组里的值。

编写一个方法,返回数组里最小的元素。

把上面的循环想办法换成while 或者是 do while试试?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿人工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 容器
  • 创建数组
  • 数组的访问
  • 数组在内存中的存储
  • 数组遍历
  • 数组越界
  • 数组空指针
  • 数组元素查找
  • 数组反转
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档