Java漫谈6
今天这篇想聊聊数组。 在聊数组之前先聊个别的,如果想在Java中实现一个 数字-月份 转换,那我该怎么做呢?就比如数字1代表了一月份,数字2代表了二月份…数字12代表了十二月份。 当然,我现在手里的工具只有8大基本数据类型,如何构造类,流程控制语句。那么我最先能想到的,也算是目前唯一能想到的就是用if控制语句来做逐个输出。上一篇漫谈中没有提到 switch语句 ,当时真没想起来,抱歉了,以后用一篇的时间单独聊这个,所以这次我们就只聊 if 语句的方式。 如果用if来写的话,示例如下:
public void trans(int i){ if(i==1){
System.out.println("一月份");//输出一月份
}else if(i==2){
System.out.println("二月份");//输出二月份
}
... else if(i==12){
System.out.println("十二月份");//输出十二月份
}
}
我们再来回顾一下这整个过程,输入一个值i,判断它是不是等于1,如果是的话就输出,不是的话就判断它是不是等于2,如果是的话,再输出,不是的话再判断是不是等于3,如果是的话……等等,它的判断语句已经出现了重复,而且这种重复只需要同时改变输入的值和其中的一个判断因子,也就是说整个判断的框架 i==m 这个框架是没有变的。那既然它重复了,那能不能用循环来代替这样的重复,也就是1-12个月。所以我可以把上面的方法改成for循环的,如下:
public void trans(int i){
for(int m=1; m<13; m++){
if(i==m){
System.out.println(m + "月份");//输出一月份
}
}
}
似乎这是一条路,但这样一来,结果就变成了 1月份,2月份,……,12月份, 而这样一来,与之前所说的纯数字月份就不一样了。 不过这次用的for循环倒是给了一个启发,就是for循环中的循环次数,也就是这里的m,它就像一个局外人一样,告诉我们,循环进行到了第几次了。如果我们能把月份的具体名称放到一间“教室”里面,并有序的排上坐,也就是我点名是说一号桌的时候,一月份会跳出来说声“到,我是一月份”,那么这样一来问题就会被解决。Java中与之对应的充当这个角色的就是数组,它就是一个能装同一类的对象的一个数据组。数组本身还自带一个长度值,并且每一个元素也会自带一个下标,用于表示自己在数组中的位置。而我们就可以利用这个特性来改造上面的方法。
public void trans(int i){
String strM = ["一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份"]; for(int m=1; m<13; m++){ if(i==m){
System.out.println(strM[m]);//输出一月份
}
}
}
再进一步,如果说 strM[m] 能达到效果,那也就是说 strM[i] 也能得到效果。那这样一来用数组下标能快速定位这一特点,就能在不用for循环的情况下得到值。如下:
public void trans(int i){
String strM = ["一月份", "二月份", "三月份", "四月份", "五月份", "六月份", "七月份", "八月份", "九月份", "十月份", "十一月份", "十二月份"];
System.out.println(strM[i]);
}
数组的下标是数组的一个很常用的功能,今天我们通过月份转换的例子聊到了这个数组的功能,而在最后的方法中构造数组时,我使用的是数组的三大构造方法之一的一步到位构造法,其它还有空壳法 String strM[] = new String[]{}, 定义框架法 String strM[] = new String[5]。 希望能使你对数组的下标功能有个新角度的认识,咱们下回见。
- hdu---(1800)Flying to the Mars(trie树)
- 解决Tomcat数据连接池无法释放
- hdu----(1075)What Are You Talking About(trie之查找)
- hdu--(1247)Hat’s Words(trie树)
- HDU----(4519)郑厂长系列故事——体检
- 张戈博客成功启用移动端主题:Mobile Pack
- Oracle数据库性能障碍分析利器:SYSTEMSTATE DUMP介绍
- hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)
- HTTP加速器varnish安装小记(1)
- 手把手教你估算深度神经网络的最优学习率(附代码&教程)
- 批处理判断第一个硬盘的最后一个分区并进入
- MVCC原理探究及MySQL源码实现分析
- 关于热点数据导出与加载的影响,多的是你不知道的事
- 【Python】30行代码教你将微信变成智能回复机器人
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 最全总结 | 聊聊 Python 数据处理全家桶(Memcached篇)
- Linux内核平台总线设备驱动模型浅析
- Sentinel熔断降级说明
- 浅谈text段、data段和bss段
- RocketMQ消息发送常见错误与解决方案
- 浅谈内核的Makefile、Kconfig和.config文件
- HTTPS 基本原理
- 自动化运维平台Spug测试
- 如何提升前端基建的效能价值?
- iTerm2安装和配置
- 最新最全的mutect2教程
- Flutter基础widgets教程-CupertinoAlertDialog篇
- Spring的Controller是单例还是多例?怎么保证并发的安全
- 用TypeScript装饰器实现一个简单的依赖注入
- PING问题解决方法_20190305