码迷,mamicode.com
首页 > 编程语言 > 详细

jjava的几个奇怪语法

时间:2018-07-27 23:16:48      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:for   style   .com   数组   使用   冒号   str   names   静态方法   

=============================
Java 双冒号 :: 语法的含义
=============================
下面的代码中有双冒号,初看上去很奇怪,
list.forEach(System.out::println);

这是Java8的"方法引用", 语法是 类名::静态方法名, 一般用作简化Lamda表达式.
详见讨论: https://www.zhihu.com/question/28565691
比如:
list.forEach(System.out::println) 等价于 list.forEach(i->System.out.println(i))
nameList.forEach(Person::new) 等价于 nameList.forEach(name->new Person(name))

 

=============================
Java 三个点 ... 参数的含义
=============================
Java 1.5引入了三个点...语法, 即可变参数语法. 既然是可变参数语法, 说明它仅仅能用于函数参数定义, 另外也只能用于最后一个参数. 在函数体中, 这个可变参数可以被看作是一个数组; 而在函数调用方面, 可以为该参数传入: 一个数组实参, 或者0个参数, 或者多个实参.

可变参数的函数, 比普通的数组参数函数使用更灵活. 详见示例:

public class App
{
    static void test1(String...names)
    {
       for(String name:names){
          System.out.println(name);
       }
       System.out.println("end of test1");
    }

    static void test2(String[] names)
    {
       for(String name:names){
          System.out.println(name);
       }
       System.out.println("end of test2");
    }

    public static void main(String[] args) {
        test1(new String[] {"a","b"});
        test1("a","b");
        test1(); //甚至可以不传参数

        test2(new String[] {"a","b"});
        //test2();  //不传参数将报语法错误
        test2(new String[] {}); //传个空数组, 相当于不传参数
    }
}

 

jjava的几个奇怪语法

标签:for   style   .com   数组   使用   冒号   str   names   静态方法   

原文地址:https://www.cnblogs.com/harrychinese/p/java_syntax.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!