.新特性
        可变参数的意义以及实现
        
        那么下面通过一个简单的思考来分析可变参数的存在意义
        范例:如果说现在要定义一个方法,这个方法可以实现任意多个整型数据的相加
            那么现在唯一可以想到的方法的实现思路就是利用数组作为方法的参数

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笔记 第三十一 扩展结构的更多相关文章

  1. 菜鸡的Java笔记 第三十七 - java 线程与进程

    线程与进程        线程与进程的区别                最早的的时候DOS 系统有一个特点:只要电脑有病毒,那么电脑就死机了,是因为传统的DOS 系统属于单进程的操作系统       ...

  2. 菜鸡的Java笔记 第三十四 Annotation

    Annotation        多例模式特点:            1. 多例类可以有多个实例            2. 多例类必须自己创建自己的实例,并管理自己的实例,和向外界提供自己的实例 ...

  3. 菜鸡的Java笔记 第三十三 - java 泛型

    泛型 GenericParadigm        1.泛型的产生动机        2.泛型的使用以及通配符        3.泛型方法的使用                JDK1.5 后的三大主 ...

  4. 菜鸡的Java笔记 第三十 - java 异常的捕获及处理

    异常的捕获及处理        1.异常的产生分析以及所带来的影响        2.异常的处理的基本格式        3.异常的处理流程        4.异常的处理模式        5.自定义 ...

  5. 菜鸡的Java笔记 第三十五 接口定义增强

    接口定义增强        在java从一开始到现在接口之中的核心组成部分:抽象方法与全局常量,但是随着技术的不断发展,用户在使用过程之中发现了有一些问题        如果说现在有一个接口经过了长年 ...

  6. 菜鸡的Java笔记 第三十六 - java 函数式编程

    StudyLambda    Lambda 指的是函数式编程,现在最为流行的编程模式为面向对象,很多的开发者并不认可面向对象,所以很多的开发者宁愿继续使用 C 语言进行开发,也不愿意使用java,c+ ...

  7. 菜鸡的Java笔记 第三十二 - java 静态导入的实现

    静态导入的实现        为了理解静态导入的操作产生的动机,下面通过一个具体的代码来观察        范例:现在有一个 Import 的类,这个类中的方法全部都是 static 方法 packa ...

  8. 菜鸡的Java笔记第三 - java 自动转换原则

    自动转换原则 数据范围保存大的数据类型要转换为数据范围保存小的数据类型,使用强制转换(强制转型就是在变量的前面加括号,在括号里写上需要强制要转的类型.) 数据范围保存小的数据类型可以自动转换为数据范围 ...

  9. 菜鸡的Java笔记 第十一 - java 封装性

    1.1封装的基础实现.        封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保 ...

随机推荐

  1. After Effects 图层属性及属性组结构详解

    根据结构类型的属性分类 在 After Effects 的脚本开发中,图层的属性可被区分为三种类型:PROPERTY.INDEXED_GROUP 和 NAMED_GROUP .通过使用app.proj ...

  2. 解析csv数据绘制曲线图

    一个解析csv数据的小工具,所做项目中要查看脉冲图谱,经理就让我这个刚入职的小萌新写了个小程序.同事将csv格式的脉冲数据发给我,我的想法就是,将这些csv里的数据作为纵轴,x++为横轴,绘制出折线图 ...

  3. 微信小程序内判断是否关注公众号(JAVA)

    微信小程序内判断是否关注公众号(JAVA) 思路来源(第二种): https://blog.csdn.net/Yanheeee/article/details/117295643 /** * 总体思路 ...

  4. Typora配置双击图片放大功能

    在Typora中,默认没有点击图片放大功能,本文就教大家如何配置该功能. 我的环境版本 Typora版本:0.11.13 LightBox版本:2.11.3 下载LightBox 可以从Github下 ...

  5. VS2019中安装2017,2015

    VS2019中安装2017,2015

  6. 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  7. 源码解析-Abp vNext丨分布式事件总线DistributedEventBus

    前言 上一节咱们讲了LocalEventBus,本节来讲本地事件总线(DistributedEventBus),采用的RabbitMQ进行实现. Volo.Abp.EventBus.RabbitMQ模 ...

  8. 加法运算替代 牛客网 程序员面试金典 C++ Python

    加法运算替代 牛客网 程序员面试金典 题目描述 请编写一个方法,实现整数的乘法.减法和除法运算(这里的除指整除).只允许使用加号. 给定两个正整数int a,int b,同时给定一个int type代 ...

  9. Luogu P2822 [NOIp2016提高组]组合数问题 | 数学、二维前缀和

    题目链接 思路:组合数就是杨辉三角,那么我们只要构造一个杨辉三角就行了.记得要取模,不然会爆.然后,再用二维前缀和统计各种情况下组合数是k的倍数的方案数.询问时直接O(1)输出即可. #include ...

  10. Linux 显示ip、dns、网关等命令

    在新版的ubuntu 终端里输入命令nm-tool, 想查看网络参数设置, 没想到却返回如下内容:   未找到 'nm-tool' 命令,您要输入的是否是:  命令 'dm-tool' 来自于包 'l ...