文章目录

  • 前言
  • 一、电梯“招婿”启示风波
    • 1.1、寻找“一位又高又帅的 IT 同行人员”
    • 1.2、数组“招婿”核心代码
    • 1.3、代码全是错误,水平不高
  • 二、Java 声明、创建、初始化数组
    • 2.1、数组声明存在的语法错误
    • 2.2、数组声明、创建、初始化的正确方式
  • 三、Java 中对于不同数据类型的处理
    • 3.1、基本数据类型
    • 3.2、引用数据类型
    • 3.3、类型默认值
  • 四、foreach 循环对于数组的处理
    • 4.1、foreach 循环怎么处理数组?
    • 4.2、谨防数组下标越界
  • 五、完整的“招婿”代码及验证
  • 总结

前言

随着疫情的放开,在家里闲来无事的我出门放风。电梯里无意间瞥见一张“招婿”启示,寻找一位又高又帅的 IT 同行人员当女婿,女不女婿什么的无所谓,“一位又高又帅的 IT 同行人员”这说的不就是我吗?定睛一看,还是 Java 语言写的,简单分析了一下:为了排除掉非 IT人员的骚扰,对口寻人,通过数组来获取联系方式,这年头不懂点技术还不能结婚是吧?这更不是术业有专攻吗?来劲了,我都不想出去玩了,这条件,被人捷足先登了怎么办!为了兄弟们的老婆,作为新时代雷锋,我来为你们打下第一关。


一、电梯“招婿”启示风波

1.1、寻找“一位又高又帅的 IT 同行人员”

随着疫情的放开,在家里闲来无事的我出门放风。电梯里无意间瞥见一张“招婿”启示,寻找一位又高又帅的 IT 同行人员当女婿,女不女婿什么的无所谓,“一位又高又帅的 IT 同行人员”这说的不就是我吗?“招婿”启示具体如下图所示:

1.2、数组“招婿”核心代码

定睛一看,还是 Java 语言写的,简单分析了一下:为了排除掉非 IT人员的骚扰,对口寻人,通过数组来获取联系方式,这年头不懂点技术还不能结婚是吧?这更不是术业有专攻吗?来劲了,我都不想出去玩了,这条件,被人捷足先登了怎么办,马上将核心代码摘抄如下:

int[] arr = new [] {1,5,6,0,7,4,9,3};
int[] index = new int[] {0,1,2,3,4,0,5,1,2,6,7};
String tel = "";
for(int i:index) {tel += arr{i};
}
System.out.println("联系方式:" + tel);

1.3、代码全是错误,水平不高

显而易见的,这招婿题目里有很多语法错误,月薪两万的程序媛哪能这么拉?IDE 满满的全是报错,具体如下图所示:


所以我猜测这题可能是老丈人自个儿出的,算是一个“抛出去的绣球”,留个心眼,接下来我们对于核心代码进行逐行分析。

二、Java 声明、创建、初始化数组

2.1、数组声明存在的语法错误

int[] arr = new [] {1,5,6,0,7,4,9,3};
int[] index = new int[] {0,1,2,3,4,0,5,1,2,6,7};

“招婿”代码分析:第一行和第二行代码,分别声明、创建和初始化了两个 int 型的数组 arr 与 index,arr 中包含 1,5,6,0,7,4,9,3 八个元素,index 中包含 0,1,2,3,4,0,5,1,2,6,7 十一个元素。

第一行代码包含有严重的语法错误,创建数组 arr 时没有声明数组类型,其报错具体如下图所示:


正确代码应修改为:

int[] arr = new int[] { 1, 5, 6, 0, 7, 4, 9, 3 };

2.2、数组声明、创建、初始化的正确方式

本着普及知识的原则,进一步给“老丈人”扫盲,我们回忆一下:在 Java 中我们有两种常见的对于数组的声明、创建和初始化的方法

第一种方法是我们在 Java 中最为常用的,其基本格式如下:

elementType[] arrayRefVar;(元素类型[] 数组引用变量;)

第二种方法这种风格来自于 C/C++,其基本格式如下:

elementType arrayRefVar[];(元素类型 数组引用变量[];)

如声明并创建一个 int 型的数组 arr,初始化包含三个元素 1,2,3,对应的两种形式的实现代码如下:

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

当然我们也可以使用如下的形式:

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

或者

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

三、Java 中对于不同数据类型的处理

String tel = "";

“招婿”代码分析:在第三行代码中,定义并初始化了一个字符串的对象 tel 用于存放手机号,默认值由空值代替 null。

3.1、基本数据类型

对于 Java 中的八大基本数据类型、包装类、最小值、最大值在这里我们写个小 demo 简单回忆一下。

package com.bailu.test;public class PrimitiveTypeTest {public static void main(String[] args) {// byteSystem.out.println("基本类型:byte 二进制位数 " + Byte.SIZE);System.out.println("包装类:java.lang.Byte");System.out.println("最小值:Byte.MIN_VALUE " + Byte.MIN_VALUE);System.out.println("最大值:Byte.MAX_VALUE " + Byte.MAX_VALUE);System.out.println("-----------------------------------");// shortSystem.out.println("基本类型:short 二进制位数 " + Short.SIZE);System.out.println("包装类:java.lang.Short");System.out.println("最小值:Short.MIN_VALUE " + Short.MIN_VALUE);System.out.println("最大值:Short.MAX_VALUE " + Short.MAX_VALUE);System.out.println("-----------------------------------");// intSystem.out.println("基本类型:int 二进制位数 " + Integer.SIZE);System.out.println("包装类:java.lang.Integer");System.out.println("最小值:Integer.MIN_VALUE " + Integer.MIN_VALUE);System.out.println("最大值:Integer.MAX_VALUE " + Integer.MAX_VALUE);System.out.println("-----------------------------------");// longSystem.out.println("基本类型:long 二进制位数 " + Long.SIZE);System.out.println("包装类:java.lang.Long");System.out.println("最小值:Long.MIN_VALUE " + Long.MIN_VALUE);System.out.println("最大值:Long.MAX_VALUE " + Long.MAX_VALUE);System.out.println("-----------------------------------");// floatSystem.out.println("基本类型:float 二进制位数 " + Float.SIZE);System.out.println("包装类:java.lang.Float");System.out.println("最小值:Float.MIN_VALUE " + Float.MIN_VALUE);System.out.println("最大值:Float.MAX_VALUE " + Float.MAX_VALUE);System.out.println("-----------------------------------");// doubleSystem.out.println("基本类型: double 二进制位数 " + Double.SIZE);System.out.println("包装类:java.lang.Double");System.out.println("最小值:Double.MIN_VALUE " + Double.MIN_VALUE);System.out.println("最大值:Double.MAX_VALUE " + Double.MAX_VALUE);System.out.println("-----------------------------------");// charSystem.out.println("基本类型:char 二进制位数 " + Character.SIZE);System.out.println("包装类:java.lang.Character");System.out.println("最小值:Character.MIN_VALUE " + (int) Character.MIN_VALUE);System.out.println("最大值:Character.MAX_VALUE " + (int)Character.MAX_VALUE);}
}

下面是我们得到的结果,简简单单是不是?

基本类型:byte 二进制位数 8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE -128
最大值:Byte.MAX_VALUE 127
-----------------------------------
基本类型:short 二进制位数 16
包装类:java.lang.Short
最小值:Short.MIN_VALUE -32768
最大值:Short.MAX_VALUE 32767
-----------------------------------
基本类型:int 二进制位数 32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE -2147483648
最大值:Integer.MAX_VALUE 2147483647
-----------------------------------
基本类型:long 二进制位数 64
包装类:java.lang.Long
最小值:Long.MIN_VALUE -9223372036854775808
最大值:Long.MAX_VALUE 9223372036854775807
-----------------------------------
基本类型:float 二进制位数 32
包装类:java.lang.Float
最小值:Float.MIN_VALUE 1.4E-45
最大值:Float.MAX_VALUE 3.4028235E38
-----------------------------------
基本类型: double 二进制位数 64
包装类:java.lang.Double
最小值:Double.MIN_VALUE 4.9E-324
最大值:Double.MAX_VALUE 1.7976931348623157E308
-----------------------------------
基本类型:char 二进制位数 16
包装类:java.lang.Character
最小值:Character.MIN_VALUE 0
最大值:Character.MAX_VALUE 65535

3.2、引用数据类型

在 Java 中除去八大基本数据类型,数组、对象都是引用数据类型,类似于 C/C++ 中的指针,指向的是一个对象,指向对象的变量被称为引用变量。这些变量在声明的时候被指定为一个特定的类型,例如:

Boy boy = new Boy("bailu");

变量一旦被声明,类型就不能被改变了,所有引用类型的默认值都是 null。

3.3、类型默认值

八大基本数据类型和引用数据类型的默认值具体如下表所示:

数据类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘u0000’
boolean false
String (or any object) null

四、foreach 循环对于数组的处理

for(int i:index) {tel += arr{i};
}

“招婿”代码分析:在第 4~6 行间引入了一个 foreach 循环,定义了一个 int 变量 i 来遍历数组 index。遍历次数即为 index 数组中元素的个数,也就是我们需要得到的手机号包含的位数,故 index 数组中必须要包含 11 位数字。通过对遍历 index 数组下标的形式将对应的元素组合成一个 11 位数字的字符串,即完整的“招婿”手机号,所以这就要求数据的下标是不能越界的,即在数组 index 中的任意一个元素值都不能大于 arr 数组的长度,即满足 int 型且小于等于 7。

故上面代码存在语法错误,正确的应该为:

for(int i:index) {tel += arr[i];
}

4.1、foreach 循环怎么处理数组?

foreach 循环属于 for 循环,可以在不使用数组下标变量的情况下顺序地遍历整个数组,例如显示数组 arr 的所有元素就可以使用如下代码:

int[] arr = new int[] { 0, 1, 2, 4, 4, 5, 9 };
for (int i : arr) {System.out.println(i);
}

运行结果具体如下图所示:


在使用 foreach 循环我们需要注意:定义的变量 i 必须声明为与被遍历数组 arr 中相同的数据类型

“招婿”代码分析:根据 foreach 循环对于数组的处理原则,我们按照 index 数组{ 0, 1, 2, 3, 4, 0, 5, 1, 2, 6, 7 }的下标顺序,我们在对应数组 arr 中寻找对应元素,分别为:1,5,6,0,7,1,4,5,6,9,3,即得到的 tel 为 15607145693。

4.2、谨防数组下标越界

越界访问数组是在 Java 中经常出现的程序设计错误,它会抛出一个运行错误 ArrayIndexOutOfBoundsException。为了尽量避免这个错误的发生,在使用数组的时候我们应该确保使用下标不超过 arrayRefVar.ength-1。也要注意线性表和数组的区别。人家“招婿”都没犯的错误,我们更不能犯哦。

五、完整的“招婿”代码及验证

经过我们的一波分析,现在完整代码浮出水面,即:

package com.bailu.test;public class Zhaoxu {public static void main(String[] args) {int arr[] = new int[] { 1, 5, 6, 0, 7, 4, 9, 3 };int[] index = new int[] { 0, 1, 2, 3, 4, 0, 5, 1, 2, 6, 7 };String tel = "";for (int i : index) {tel += arr[i];}System.out.println("联系方式为:" + tel);}
}

我们运行一下结果,看看对不对,具体如下图所示:


没毛病,简简单单拿下!查了一下归属地,湖北武汉的嗷!把我这篇文章解题思路背会,上门女婿非你莫属。


兄弟们可以上了,但是现在网络诈骗盛行,要谨防电信诈骗,记得先下载国家反诈中心 APP。"事了拂衣去,深藏身与名"我就先走了!


总结

现在干啥的门槛都提高了,“招婿”都得对口了,兄弟们要努力提高自己啊。小小一道招婿题,里面的学问和暴露出来的问题也不少,在开发中要养成规范代码书写的好习惯,不然是真容易被人看笑话;也不要“好高骛远”,基本功要扎实,我们可能没有那么多造航母的机会,把螺丝打好不出错就是优秀了。另外,有哪位兄弟出手成功的,记得来给我送包喜糖!


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!

新年新玩法,数组“招婿”:老许,你要老婆不要?相关推荐

  1. 三星手机换新卡显示无服务器,玩机“老炮”告诉你三星手机新玩法

    原标题:玩机"老炮"告诉你三星手机新玩法 目前的整个手机市场都已趋于瓶颈,如何在瓶颈中寻找突破,每个厂商都有自己的方向. 就拿当前来说许多厂商一个劲儿的推新配置.新产品,恨不得互联 ...

  2. 发布3天获推荐10w+,视频号内容出现新玩法?

    上月,腾讯发布Q3季度财报,视频号也被重点提及,广告主对其早前上线的原生信息流广告需求强劲,像首批投放的阿玛尼等品牌的广告还曾引起过不少讨论. 用户对视频号广告的关注热度高,也从侧面说明,视频号目前的 ...

  3. fla 走迷宫游戏 源码_迷宫新玩法,果断一试

    迷宫, 真的是谜一样的存在, 大到几十岁的成年人, 小到三岁小儿, 都对其没有抵抗力. 而迷宫君也是真给力, 除了能给人带来愉悦感与成就感, 还能同时锻炼专注力.空间感.思维力.视觉追踪等, 是儿童感 ...

  4. 博图在线升级 gsd_升级ing!旺铺不够吸引人?快来学习国际站“吸睛”新玩法...

    最近,阿里国际站旺铺管理后台全新升级 快来和小普特一起掌握这些新玩法吧 变化点 1.新增店铺管理页面,可由此进入装修版本编辑页面(原来的编辑器不变),店铺管理页面内整合旺铺诊断.一键智能生成.各页面编 ...

  5. 淘宝足迹新玩法,如何通过足迹增加商品曝光量,打标后足迹不出解决方法,淘宝详情页的下拉出现足迹怎么实现的

    以上两张图就是淘宝最近新更新的一个对于足迹的一个新玩法(释放查看更多精彩),具体的玩法是在浏览某个详情页时,详情页往下滑,就会跳转出自己足迹的中的商品,这个商品的推荐位的个数是不固定的,左右滑动即可查 ...

  6. 活动回顾 谷露招聘沙龙VOL.6 解锁校招人才获取新玩法

    3月22日 谷露招聘沙龙VOL.6 <2019校招季,解锁人才获取新玩法> 在虹口办伴共享空间成功举办. 在连续的阴雨绵绵后,上海终于迎来了大晴天. 本次沙龙,谷露特别邀请到K12在线教育 ...

  7. 电商裂变新玩法—全新拼团!

    电商裂变新玩法-全新拼团! 拼团的火爆大概是从2015年开始,在2016年势头突飞猛进,红遍大江南北.17年陆续诞生了不少拼团产品,拼多多也接着拼团玩法的这股东风顺利上市. 拼团火热的一个重要因素就是 ...

  8. access令两列运算得到新属性_iOS版更预告 | 新玩法新精灵来袭开启你的全新旅程...

    亲爱的小伙伴们大家好 iOS版本更新即将上线 大家准备好迎接新的挑战 ▼ ↓↓↓ గ .̫ గ 01更新时间: iOS版本:9月10日10:00-12:00 02详细内容: 新增闪光训练馆,50级开启 ...

  9. 快印客人工智能名片,7个销售新玩法

    快印客人工智能名片,7个销售新玩法 发布以来,受到各方的关注和赞誉,也得到了众多企业管理者和销售员的认可.快印客凭借开创性的商业模式.新颖潮流的玩法.丰富的功能切入和不俗的业绩提升表现,都让它成为20 ...

最新文章

  1. 关于Office 365 域名绑定问题
  2. Entity Framework中IQueryable, IEnumerable, IList的区别(转自网络)
  3. 使用元数据设计测试用例
  4. oracle 有计划任务吗,oracle计划任务的问题
  5. android动画编辑软件,ALM视频动画编辑
  6. 博客园,我的技术摇篮
  7. 电子商务发展的中心主体与边缘业务
  8. .NET CLR之垃圾回收(GC)
  9. python博弈论_通过几个例子理解博弈论与纳什均衡
  10. 看图学网络 一 网络的组成
  11. CX水晶易表连接数据库的方法
  12. DIY无人机组装与飞控参数调试记录(DJI NAZA-LITE)
  13. 北京航空航天大学计算机考研难度,北京航空航天大学考研难吗?一般要什么水平才可以进入?...
  14. 保研分享:双非软件学渣 - 985CS
  15. 成本管理体系具体业务解决方案说明(三 合约规划)
  16. 印度的软件神话真不能打破吗?
  17. 高尔顿数据集和Anscombe四重奏数据集
  18. 网络设备的连接以及配置
  19. 字号与磅值对应关系_终极版式指南:磅值,大写与小写,Em和En破折号等
  20. 判断文件或文件夹是否存在的方法

热门文章

  1. 微信公众平台开发教程(三)_OAuth2.0认证
  2. excel筛选情况下数字下拉递增的方法
  3. Android studio的ADBWifi使用
  4. JS判断当前页面是否在微信内打开
  5. Linux清理文件内容的四种方式
  6. Vue项目——文章发布和修改
  7. SWUST OJ 1012: 哈希表(链地址法处理冲突)
  8. 215868-33-0,Ocean Blue, SE,3-羧基-6,8-二氟-7-羟基香豆素琥珀酰亚胺酯蓝色荧光染料
  9. 小程序推荐——那些好用实用的小程序(图片类、资讯类、工具类)
  10. keep-alive包裹的el-tabs中有两个页面使用echart渲染空白问题