1.1.1 前言
这几天快速学习了一下Groovy语言,现在还没有学习完。先进行记录,后续可以看看以前学习的资料。
首先还是需要有JAVA的基础,否则入门这方面没有那么简单。
还有不会去写Java的对比代码,太浪费时间,你们大概看下吧 。
还有我学的知识也是看到那写到哪,没有大概的标准。
举出的例子,也是我不熟悉,或者我不知道的知识点。因为明年要出去换公司,所以这也相当于在复习以前的知识。
1.1.2 基本语法
见面还是老规矩,你好!groovy。
class test {static void main(String[] args) {println("hello groovy!");}}
1.2.1 关键字解释
- def :相当于Object,所用定义方法名,定义字段名,定义数组名,定义Bean都可以使用def声明。需要避免和基本类型重合定义,例如:def String user
- assert :断言,判断传入的参数是否合法,根据异常会直接终止程序,还有减少使用这个关键字,会造成大量性能的浪费。
1.2.2 基础
1.2.2_a 范围运算符
```groovy // 范围 def range = 5..10; println(range); println(range.get(3));
// 结果 5..10 8
<a name="lizUI"></a>## 1.2.2_b 赋值运算符```groovy// 除余int a = 5;int b = 2;def x = a %= b;println(x);if ((a %= b) == 1) {println(true);} else {println(false);}//结果1true
1.2.2_c 循环(for-in语句)
// for-in语句def range = 5..10;for (int r in range) {print(r + ",");}// 结果5,6,7,8,9,10,--------分割线-------------int[] arr = [0, 1, 2, 3, 4];for (int i in arr) {println(i);}// 结果01234
1.2.2_d 可以直接声明键值对
def employee = ["key": 1, "name": "Jokn", "Age": 30];// 不需要声明属性类型,def可以忽略for (emp in employee) {println(emp);}//结果key=1name=JoknAge=30
1.2.2_e 方法(默认参数)
// 可以直接在参数里赋值static def someMethod(int a, int c = 1) {int d = a + c;return d;}static void main(String[] args){// 调用的时候,分两种方式int result = someMethod(2);println(result);// 可以直接传入新参数,进行计算int result2 = someMethod(5, 5);println(result2);}// 结果310
1.2.2_f 对象的使用
class User implements Serializable {private String name;private String age;private String sex;/*** 可以忽略get/set* @return*/String getName() {return this.name;}void setName(String name) {this.name = name;}/*** 构造器,避免使用def*/User() {}}
1.2.2_g get/set的使用
def user = new User();// with:可以忽略大量的前缀,例如user.setName()user.with {name = 'Tom'age = 50sex = '男'}// set/get可以直接调用user.sex = "女"user.name = "something"println "name=${user.name} age=${user.age} sex=${user.sex}"// 结果name=something age=50 sex=女------------------分割线----------------------------// 第二种直接声明,构造器都不需要def user2 = new User(name: "huanfeng", age: 22, sex: "男")// 输出的时候,需要双引号,否则会直接报错println "${user2.name} ${user2.age} ${user2.sex}"// 结果huanfeng 22 男
1.2.2_h 分行打印快捷方式
// 可以忽略括号,但是有的方法需要// “\”这个符号并没有换行,只有相当于tab键的空格// 自动换行,使用三个多个双引号或单引号println("1111111111111111111111111111111111111 1\2 \3")// 结果1111111111111111111111111111111111111 1 2 3// 三个双引号框起后,里面的空格也会直接输出,并不会换行处理println("""111111111111111111222222222222222222333333333333333333""")// 结果111111111111111111222222222222222222333333333333333333
1.2.2_i 三元运算符的使用
/*** 三元运算的简写只能用来判断非空* @param name* @return*/static def check(String name) {assert namedef result = name ?: "Unknown"// 可以省略returnresult}/*** 三元运算还是需要按照以前Java的格式* @param str* @return*/static def checkNum(String str) {def reulst = str.length() > 3 ? str : "xiaoyu"reulst}
