菜鸡的Java笔记 第三十一 扩展结构
.新特性
可变参数的意义以及实现
那么下面通过一个简单的思考来分析可变参数的存在意义
范例:如果说现在要定义一个方法,这个方法可以实现任意多个整型数据的相加
那么现在唯一可以想到的方法的实现思路就是利用数组作为方法的参数
package cn.mysterious; public class NewCharacteristics { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(new int[] {1,2,3}));
System.out.println(add(new int[] {1,2,3,4,5,6})); }
/**
* 此方法可以实现任意多个整型数据的相加操作
* @param data 所有的整型数据要求封装在数组之中
* @return 数据的累加结果
*/
public static int add(int[] data){
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
严格来讲以上的代码虽然实现了开发要求,只不过这种做法有一点不合适
要求是传递任意多个参数,而现在变成了值传递一个数组参数
那么从JDK1.5之后将发生变更对于方法定义的格式产生了新的支持
[public |protected |private] [static] [final] 返回值类型 方法名称(参数,......,参数类型... 变量)
范例:观察可变参数
package cn.mysterious; public class NewCharacteristics { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(1,2,3));
System.out.println(add(1,2,3,4,5,6));
System.out.println(add(new int[] {1,2,3})); }
/**
* 此方法可以实现任意多个整型数据的相加操作
* @param data 所有的整型数据要求封装在数组之中
* @return 数据的累加结果
*/
public static int add(int ... data){// 可变参数就是利用了数组的形式
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
可变参数本质上实现的就是一个数组操作的形式
总结
从实际来讲,不建议在自己写的代码上过多的使用此技术
foreach 循环
增强型for 循环
foreach 是一个名字,而其本质就是for循环,但是着呀昂的 for 循环是给特点的结构使用的:数组,类集
范例:传统数组的输出
package cn.mysterious; public class Foreach { public static void main(String[] args) {
// TODO Auto-generated method stub
int data[] = new int[]{1,2,3};
for (int i = 0; i < data.length; i++) { // 传统的循环操作形式
System.out.println(data[i]); // 根据索引取得数据
}
} }
但是有人认为以上的索引操作过于复杂了,而且使用索引还有可能出现数组越界的情况,现在针对于数组就可以采用如下形式的for循环完成输出
for(数据类型 变量 :数组名称){}
此语句的作用在于自动进行数组的遍历(取出)操作,而后将每一个数组元素 都保存在变量之后,这样在 for 循环里面就可以不需要使用索引来进行操作了
范例:for 循环
package cn.mysterious; public class Foreach { public static void main(String[] args) {
// TODO Auto-generated method stub
int data[] = new int[]{1,2,3};
for (int i : data) { // 数组里面的每一个内容通过循环取出,取出的内容讲给 i
System.out.println(x); // 不需要索引
}
}
}
因为最早的时候,.NET 和JAVA 是两大阵营,.NET 有这样的输出,java没有.....
总结
foreach 这个名词就是通过.NET 学来的
对于 foreach 的使用随意吧
菜鸡的Java笔记 第三十一 扩展结构的更多相关文章
- 菜鸡的Java笔记 第三十七 - java 线程与进程
线程与进程 线程与进程的区别 最早的的时候DOS 系统有一个特点:只要电脑有病毒,那么电脑就死机了,是因为传统的DOS 系统属于单进程的操作系统 ...
- 菜鸡的Java笔记 第三十四 Annotation
Annotation 多例模式特点: 1. 多例类可以有多个实例 2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ...
- 菜鸡的Java笔记 第三十三 - java 泛型
泛型 GenericParadigm 1.泛型的产生动机 2.泛型的使用以及通配符 3.泛型方法的使用 JDK1.5 后的三大主 ...
- 菜鸡的Java笔记 第三十 - java 异常的捕获及处理
异常的捕获及处理 1.异常的产生分析以及所带来的影响 2.异常的处理的基本格式 3.异常的处理流程 4.异常的处理模式 5.自定义 ...
- 菜鸡的Java笔记 第三十五 接口定义增强
接口定义增强 在java从一开始到现在接口之中的核心组成部分:抽象方法与全局常量,但是随着技术的不断发展,用户在使用过程之中发现了有一些问题 如果说现在有一个接口经过了长年 ...
- 菜鸡的Java笔记 第三十六 - java 函数式编程
StudyLambda Lambda 指的是函数式编程,现在最为流行的编程模式为面向对象,很多的开发者并不认可面向对象,所以很多的开发者宁愿继续使用 C 语言进行开发,也不愿意使用java,c+ ...
- 菜鸡的Java笔记 第三十二 - java 静态导入的实现
静态导入的实现 为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察 范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 packa ...
- 菜鸡的Java笔记第三 - java 自动转换原则
自动转换原则 数据范围保存大的数据类型要转换为数据范围保存小的数据类型,使用强制转换(强制转型就是在变量的前面加括号,在括号里写上需要强制要转的类型.) 数据范围保存小的数据类型可以自动转换为数据范围 ...
- 菜鸡的Java笔记 第十一 - java 封装性
1.1封装的基础实现. 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保 ...
随机推荐
- 在CentOS 6中安装和配置OrientDB社区版
OrientDB概述: OrientDB是一个开源NoSQL非关系型数据库管理系统. NoSQL数据库提供了一种用于存储和检索引用除表式数据之外的数据(例如文档数据或图形数据)的NO关系或非关系数据的 ...
- NOIP 模拟一 考试总结
序列 考场上信心满满的打了nlogn的做法,我以为我稳了.据考试结束1h时发现看错题目了,打成了不连续的子序列.匆匆改了n2logn的做法.考试结束后,我发现我跪了.原来到终点才会发现我做的和人家不是 ...
- 01_vue实例_数据_方法
创建实例 var vm = new Vue( { //选项 } ) 数据对象 // 我们的数据对象 var data = { a: 1 } // 该对象被加入到一个 Vue 实例中 var vm = ...
- 对epoll机制的学习理解v1
epoll机制 wrk用非阻塞多路复用IO技术创造出大量的连接,从而达到很好的压力测试效果.epoll就是实现IO多路复用的关键. 本节是对epoll的本质的学习总结,进一步的参考资料为: <深 ...
- 将DataFrame赋值为可变变量在spark中多次赋值后运行速度减慢的问题
该问题先标记上,之后有空了研究原因. 在var dataframe后将dataframe作为参数输入某方法,将结果重新赋予该dataframe,会导致spark运行显著减慢速度.暂时不知道原因,之后研 ...
- [no code][scrum meeting] Alpha 11
项目 内容 会议时间 2020-04-17 会议主题 OCR紧急技术风险分析 会议时长 30min 参会人员 PM+OCR组成员 $( "#cnblogs_post_body" ) ...
- Nginx高效核心
Nginx高效核心 目录 Nginx高效核心 Introduction I/O特性 同步/异步 阻塞/非阻塞 常见的I/O模型 阻塞型 非阻塞型 多路复用模型(多路阻塞) 信号驱动模型 异步模型 Ng ...
- WebGL着色器渲染小游戏实战
项目起因 经过对 GLSL 的了解,以及 shadertoy 上各种项目的洗礼,现在开发简单交互图形应该不是一个怎么困难的问题了.下面开始来对一些已有业务逻辑的项目做GLSL渲染器替换开发. 起因是看 ...
- Myod 选做
一.题目要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tc -tx XXX的功能 3.main与其他分开,制作静态库和动态库 4.编写Makefile ...
- hdu 4771 Stealing Harry Potter's Precious (BFS+状压)
题意: n*m的迷宫,有一些格能走("."),有一些格不能走("#").起始点为"@". 有K个物体.(K<=4),每个物体都是放在& ...