Java & Groovy & Scala & Kotlin - 08.基本语法

Overview

本节介绍四种语言的最基本的语法形式,包含注释,操作符,相等性等。

共通篇

注释

四种语言都支持以下三种注释

//  单行注释
/*
    多行注释
 */
/**
 * JavaDoc
 */

Java 篇

操作符

Java 中的操作符支持四则运算,赋值(=),运算后赋值(+=),递增递减(++, --),三元操作符(?true:false),逻辑操作符,关系操作符等。

调用方法

语法

方法名(参数列表)

add(1, 2)

相等性

Java 使用 == 表示基本数据类型的值相等和引用数据类型的地址相等;用方法 equals() 表示引用类型的内容相同。Java 的内置类都实现了自己的 equals() 方法,如果是自己建立的类则要重写 equals() 方法。

Date x = new Date(100);
Date y = new Date(100);

System.out.println("x==y: " + (x == y));    //  false
System.out.println("x.equals(y): " + x.equals(y));  //  true

Groovy 篇

操作符

包含 Java 的所有操作符之外,Groovy 还多了一个猫王操作符 ?:,该操作符是三元操作符的语法糖。

String agentStatus = "Active"

//  三元操作符
String statusTernary = (agentStatus !=null && !"".equals(agentStatus)) ? "Active" : "Inactive"

//  猫王操作符
String statusElvis = agentStatus ?: "Inactive"

在使用猫王操作符时 Groovy 会自动将左边的表达式向布尔值进行转换。转换规则为:所有逻辑上的空值都会被认为是 false,比如 null,空字符串,空数组等,除此之外的都是 true

调用方法

语法基本同 Java,但是在 Groovy 中如果方法的参数个数只有一个时,可以省略包裹在参数列表上的小括号,方法名和参数间留一个空格

println("Hello World")
// 省略小括号
println "Hello World"

相等性

Groovy 认为比较内容的使用场合要远远大于比较引用,所以 Groovy 中的 == 默认就是调用 equals() 方法。

println("x==y: " + (x == y))    //  true
println("x.equals(y): " + x.equals(y))  //  true

另外 Groovy 在比较时对空指针做了判断,所以等号左边即使是空值也不会引发空指针异常。

println(null == 10) //  false

如果你希望调用 Java 版本的 == 进行引用的比较,可以调用 is() 方法。

println("x.is(y): " + x.is(y))  //  false

Scala 篇

操作符

Scala 中一切皆对象,所有的操作符都是对应方法的语法糖。即 1 + 2 实际上就是 调用 1.+(2) 的语法糖,其中 + 既是操作符也是方法名。像这种位于两个操作数之间的操作符被称为中缀操作符,Scala 中中缀操作符在使用时可以被省略,所以 1.+(2) 可以简写成 1 + 2

Scala 支持 Java 中除了递增,递减之外的所有操作符,所以在 Scala 中不能使用 i++ 这样的语句,而需要使用 i += 1 来实现同样的功能。

调用方法

同 Groovy,只有一个参数时可以省略括号,在方法名和参数间加一个空格

相等性

同 Groovy 一样,== 调用的是 equals() 方法。 不同的是 Groovy 比较引用用的是 is(),而 Scala 则是 eq(),也就是说只是方法名不一致。

println("x.eq(y): " + x.eq(y)) //  false

Kotlin 篇

操作符

基本上同 Groovy,也拥有猫王操作符

调用方法

同 Java 一样,很久以前的版本也支持去掉小括号,不过这一特性早已被移除。

相等性

和 Groovy,Scala 一样,== 也是调用 equals(),而比较引用使用的是 ===(类似 Javascript),这三种语言同一个功能不同方法名也真是够了。

println("x===y : " + (x === y)) //  false

Summary

  • 除了 Scala 之外,其它语言都支持一元操作符 ++--
  • Groovy 和 Kotlin 都支持猫王操作符
  • 除了 Java 之外,其它语言中 == 调用的都是 equals(),比较引用则使用其它的方法,且三种语言的方法名都不一致

文章源码见 https://github.com/SidneyXu/JGSK 仓库的 _08_grammar 小节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,295评论 9 118
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • 这个小长假我约着童年的小伙伴们去了厦门,也许是因为前段时间工作太忙了,我迫不及待地想出去走走。 接到我的邀约,米粒...
    西西里的绒小鱼阅读 530评论 8 4
  • 可能是我每次见纹身师傅靖哥都给他带一罐茶叶吧 他见我也异常热情 在补色的一个小时里 我们俩像两个长舌妇一样把家长里...
    AI大叔阅读 212评论 0 0