Groovy 和 Java 的区别
Groovy 是一种强大的、可选类型的动态语言,用于在其语法类似于 Java 的 Java 平台上开发应用程序。它的打字规则是强大的、静态的和动态的。Groovy 最好的地方在于,由于它扩展了 JDK,它接受了 Java 代码。Groovy 既可以用作编程语言,也可以用作脚本语言。Groovy 是 Java 的超集,这意味着 Java 程序将在 Groovy 环境中运行,反之亦然,也可能不可能。而 Java 是强类型和静态类型的编程语言。
1. 默认导入 :
在 Groovy 中,默认会导入一些通用包和类:
java.io.*
java.lang.*
java.math.BigDecimal
java.math.BigInteger
java.net.*
java.util.*
groovy.lang.*
groovy.util.*
在 Java 中,默认情况下仅导入 java.lang.* 包。
2. 额外关键词:
as , define , trait 这些是 Groovy 中的额外关键字。不能将此关键字用作变量名。
3. 默认访问修饰符:
在 Java 中,默认访问修饰符是包,即如果没有为字段、方法或类指定访问修饰符,它就会变成包私有。
在 Groovy 中,它默认是公共的。
4. Getter 和 Setter:
在 Java 中,需要为字段提供 getter 和 setter 方法,特别是如果遵循 Java Beans 命名约定并使用工具和库,它们使用反射来动态访问和改变 bean 属性。在 Groovy 中,为类成员自动生成 getter 和 setter。
5. 点分隔符:
在 Java 中,我们使用点运算符 ( . ) 来访问类的属性
Groovy 还支持点运算符,但与 Java 调用不同的是,它实际上通过 getter 和 setter,它们在 Groovy 中自动生成。
在 Groovy 中,分号 (;) 是可选的,仅当您喜欢或想要在一行中编写多个语句时才使用它们。
for循环:
与在大多数任务中使用 for 循环一样,在 Groovy 中声明 for 循环要容易得多,可以将 for 循环声明为:
“`java for(j in 0..4){ print j }
0.upto(3) { print "it" }
4.times{ print "it" }
在Java中的写法:
“`java
for(int i=0;i<=5;i++){
System.out.println(i);
}
8. 安全导航操作员:
在 Java 中必须执行一些操作来检查空对象,以避免空指针异常。
String str = null;
if(str != null){
System.out.println(str.reverse());
}
但是在 Groovy 中,可以直接执行以下操作:
println str.reverse()
9. main() 方法:
在 Java 中,需要 main 方法来使类可执行
在 Groovy 中,不需要它。由于 Groovy 是一种脚本语言,因此每个程序都会自动有一个名为 Script 的包装类。
10.布尔求值:
Groovy 自动将表达式计算为布尔值。
def str = “test”
if(str){ println str }
11. 数组声明:
如果要在 Java 中创建字符串数组,则必须使用花括号 {} 。
在 Java 中:
String[] testArray = {"A", "B", "C"};
而在 Groovy 中,可以使用方括号: [] 。在 Groovy 中:
String[] testArray = ["A", "B", "C"]
Java和Groovy的比较区别
Java
Groovy
它是在JDK上开发并在JVM上运行的
编译为JVM字节码,兼容Java平台
它被用作编程和面向对象的语言
它被用作编程和脚本语言
Java 默认访问修饰符包
Groovy 默认访问修饰符 public
在 Java 中,您需要为字段提供 getter 和 setter 方法,特别是如果遵循 Java Beans命名约定
在 Groovy 中,会为类成员自动生成 getter 和 setter
在 Java 中,分号是强制性的
在 Groovy 中,分号是可选的
Java中默认只导入 Java.lang.* 包
在Groovy中默认导入常用包
Java 具有原始数据类型和包装类来隐式或显式执行装箱和拆箱
在 Groovy 中,一切都是对象并且仅使用对象,因此没有自动装箱或拆箱的概念
Java 需要类内部的 main 方法来运行程序
Groovy 不需要任何 main 方法或方法的入口点来运行类或任何程序
- 聊一聊家用冰箱的诞生发展之路从以往到现在,外界的天气温度始终不是人类所能控制的事物。在炎热的夏天,放置在外界的食物更容易腐败变质,往往放置不到一天就会散发...
- [開箱]iPhone 6S玫瑰金賞析!前後代比較找差異評測開箱 | #手機 [開箱]iPhone 6S玫瑰金賞析!前後代比較找差異 2015/10/06 by genkiboy 特約編輯 184557 留言 3 Apple iPhone 6S / 6S Plus 於 9/25 正式在全球特...
- AI 旅行工具大盘点!31 款 AI 旅行行程规划工具,一键规划旅行路线!0. 未来百科 未来百科(https://www.huntagi.com),是一个知名的AI产品导航网站 —— 为发现全球优质AI工具而生 。目前已 聚集全球3000+优质AI工具产品 ...
- 优酷“后世界杯”战役:惊人的1.8亿流量,如何转为长线生意?世界杯带来的全民狂欢热度尚未散去,体育内容领域再度被新的消息搅热。 7月19日,阿里巴巴集团宣布完成对苏宁体育的战略投资。与此同时,...
- 为什么要使用 JSON?以下是使用JSON的几个优点:简单易用JSON的语法简单,易于理解和编写,可以快速地进行数据交换。 跨平台支持JSON可以被多种编程语言解析和生...
- 李沁电视剧作品排行榜:《如懿传》寒香见惊艳,第一《庆余年》李沁近几年的电视剧作品不仅数量多,而且评分很高,李沁是中国十大90后女明星之一,那么,你知道李沁演过的电视剧有哪些吗?排行榜123网根...
- DNF怎么刷勋章DNF怎么刷勋章,DNF刷勋章攻略,一起来看看。 DNF刷勋章攻略: 首先,你需要加入一个公会,或者自己成立一个也可以。 然后往右走,来到艾尔...
- 花与剑攻略秘籍热门标签职业 职业MORE+影月玄冰蝶花蜀山少林 热门攻略 1 花与剑手游最全捏脸数据集合大全汇总 花与剑手游捏脸数据一览 2 《花与剑》蝶花攻...
- 斯内德谈西莱森落选荷兰队大名单 球员此前行为影响团结球天下11月14日讯 荷兰队参加世界杯的26人大名单已经出炉,本赛季重回母队奈梅亨的门将西莱森的名字没有能够出现在名单上。荷兰足球名宿斯...
- 哪里都是你 (队长 纯伴奏高品质 )信息网络传播视听节目许可证:1910564号 增值电信业务经营许可证:粤B2-20060339号 粤ICP备09017694号-2 营业性演出许可证:穗天演440106120029 粤公网...