当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Groovy学习笔记二 基本语法

发表于: 2015-01-05   作者:bsr1983   来源:转载   浏览次数:
摘要: 1.默认导入 下面的导入列表总是隐藏在Groovy代码之中: groovy.lang.*; groovy.util.*; java.lang.*; java.io.*; java.math.BigDecimal; java.math.BigInteger; java.net.*; java.util.*;   如果还需要引入其他的java类,则可以直接使用ja
1.默认导入
下面的导入列表总是隐藏在Groovy代码之中:
groovy.lang.*;
groovy.util.*;
java.lang.*;
java.io.*;
java.math.BigDecimal;
java.math.BigInteger;
java.net.*;
java.util.*;
 
如果还需要引入其他的java类,则可以直接使用java中的import语句进行导入,如java.math.*;
2.数字处理
Groovy在底层用Java中的BigDecimal表示浮点数,但它会确保BigDecimal的行为尽量符合开发人员的期望。
3.变量、动态与静态类型、作用域
(1)动态与静态类型
Groovy是动态语言,所以不必指定变量的类型,变量的类型是在声明(或返回)时确定的。
如果声明了静态类型变量,在用不不正确的类型值对它赋值时,Groovy能检查出来,运行如下代码,会报错
a=new Date()
a=1;
Date b=new Date();
b=2.0;
Exception thrown
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2.0' with class 'java.math.BigDecimal' to class 'java.util.Date'
 at ConsoleScript4.run(ConsoleScript4:4)
也就是在b=2.0;这一句执行报错,不能将2.0这个值赋给Date型的变量b。
(2)Groovy中的作用域
对于Groovy里的类,其作用域和Java一样,类、方法、循环作用域的变量,他们的作用域都跟你想的一样。但Groovy脚本则不同。
简单说,Groovy脚本有两种作用域
  1. 绑定域,绑定域是脚本的全局作用域。
  2. 本地域,本地域就是变量的作用域局限于声明它们的代码块。对于在脚本代码块内声明的变量(比如在脚本的顶部),如果是定义过的变量,其作用域就是定义它的本地域。
定义变量是指被声明为静态类型,或用特殊的def关键字定义的变量(表明它是未确定类型的定义变量)。
    在脚本中声明的方法访问不了本地域。
 String hello="Hello World";
    void printHello()
    {
        System.out.println(hello);
    }
    printHello();
    将会出现如下异常:
Exception thrown
    groovy.lang.MissingPropertyException: No such property: hello for class: ConsoleScript6
   at ConsoleScript6.printHello(ConsoleScript6:4)
   at ConsoleScript6.run(ConsoleScript6:6)
    但如果去掉String,则可以正常输出Hello World.
(3)列表和映射语法
    Groovy中的列表和映射在底层是由Java ArrayList和LinkedHashMap实现的。
    Groovy用方括号[]指定和使用列表结构.
jvmLanguages=["Java","Groovy","Scala","Clojure"];
println(jvmLanguages[0]);
println(jvmLanguages.size());
println(jvmLanguages[0..2])
println(jvmLanguages[-1])
jvmLanguages=[];
println(jvmLanguages);
    输出为:
Java
4
[Java, Groovy, Scala]
Clojure
[]
Groory是动态类型语言,所以可以把不同类型的只保存在列表和映射中。
 jvmLanguages=["Java",2,"Scala",new Date()];
 println(jvmLanguages);
    输出为:
[Java, 2, Scala, Mon Jan 05 14:22:22 CST 2015]
    Groovy处理映射也差不多,用[]符号,并用冒号(:)来分开键值对,以映射.键(map.key)的方式去引用映射中的值。
    
languageRatings=[Java:100,Groovy:99,Clojure:"null"];
println(languageRatings["Java"]);
println(languageRatings.Clojure)
languageRatings["Clojure"]=75;
println(languageRatings["Clojure"]);
println(languageRatings);
languageRatings=[:];
println(languageRatings);
    输出为:
100
null
75
[Java:100, Groovy:99, Clojure:75]
[:]
   4.与Java差异
    (1)Groovy有大量可以省略的语法:
  1.      语句结束处的分号;
  2.     返回语句(return);
  3.     方法参数两边的括号;
  4.     public访问限定符。
 Demo demo=new Demo();
println(demo.doSomething());
public class Demo
{
     public Integer doSomething()
     {
          def x=1
          def y;def String z="Hello World"
          println "the doSomething method be invoked!"
          x=5
      }
}
    输出为:
the doSomething method be invoked!
5
   如果把上面代码中的public都去掉,输出还是一样
   (2)异常处理
    Groovy不区分检查异常和未检查异常。Groovy编译器会忽略方法签名中的所有throws语句。
    (3)相等操作符
    遵循最小以外原则,Groovy把==当做Java中的equals()方法。
    
Integer x=new Integer(2);
    Integer y=new Integer(2);
    Integer z=null;
    if(x==y)
    {
        println "x==y"
    }
    if(!x.is(y))
    {
        println "x is not y"
    }
    if(z.is(null))
    {
        println "z is null"
    }
    if(z==null)
    {
        println "z is null"
    }
 
 输出为:
x==y
x is not y
z is null
z is null
(4)内部类
  Groovy支持内部类,但大多数情况下我们应该用函数字面值替代它。

 

Groovy学习笔记二 基本语法

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
什么是HTML? 超文本标记语言。英文全称:HyperText Markup Language。HTML不是一种编程语言,而是一
首先Lua执行的每一段代码都称之为“程序块”,一个程序块也就是一连串的语句或命令,例如一个源码文
JAVA学习笔记——JAVA基础语法(一) 一、标识符 概念:JAVA里面我们可以给他取名字的(变量、类、
一、面向对象和面向过程的区别   面向过程:它所考虑的是过程和步骤,比如说开车去深圳我们要考虑
java变量: 数值型 整数类型(byte,short,int,long)浮点类型(float,double) 字符型 char 基
1.下载 下载地址为: http://groovy.codehaus.org/Download 我下载的是最新版本的Groovy 2.4.0-rc-1
1.下载 下载地址为: http://groovy.codehaus.org/Download 我下载的是最新版本的Groovy 2.4.0-rc-1
1.下载 下载地址为: http://groovy.codehaus.org/Download 我下载的是最新版本的Groovy 2.4.0-rc-1
1.下载 下载地址为: http://groovy.codehaus.org/Download 我下载的是最新版本的Groovy 2.4.0-rc-1
为什么要学习PHP? 前段时间一直在学习android应用程序的开发,随着学习的深入,逐渐在android平台
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号