java的几个奇怪语法

Posted ails100

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的几个奇怪语法相关的知识,希望对你有一定的参考价值。

  =============================
  
  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[] {}); //传个空数组, 相当于不传参数
  
  }
  
  }

以上是关于java的几个奇怪语法的主要内容,如果未能解决你的问题,请参考以下文章

jjava的几个奇怪语法

Laravel 邮件奇怪的超时错误

Django Channels 给我一个奇怪的错误

[HAOI2018] 奇怪的背包

Chrome shadow-root 应用奇怪的 CSS 规则

NavigationView 奇怪的与子视图之间的转换