zoukankan      html  css  js  c++  java
  • 菜鸡的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 的使用随意吧



  • 相关阅读:
    你试过不用if撸代码吗?
    Chrome开发者工具Debug入门
    我为什么推荐Prettier来统一代码风格
    使用JSDoc自动生成代码文档
    Async/Await是这样简化JavaScript代码的
    C#泛型约束 (转载)
    DateTime , DateTime2 ,DateTimeOffset 之间的小区别 (转载)
    允许跨域资源共享(CORS)携带 Cookie (转载)
    C#中如何利用操作符重载和转换操作符 (转载)
    EF Core 2.1 Raw SQL Queries (转自MSDN)
  • 原文地址:https://www.cnblogs.com/mysterious-killer/p/10123541.html
Copyright © 2011-2022 走看看