`
Javabengou
  • 浏览: 175994 次
  • 性别: Icon_minigender_1
  • 来自: 郴州
社区版块
存档分类
最新评论

Groovy(Java笨狗)系列--fields and local variables

阅读更多

使用最简单的术语,a variable(变量): 变量名引用的值关联着物理内存的某个位置。和Java一样,Groovy拥有 local variables(本地变量),fields(字段):local variables他们的范围定义为方法的一部分存在。fields的存在范围为类或者对象中。Fields and local variables有太多相同的声明方式,所以同时讲解他们。

  • Declaring variables
  1. Fields and local variables 使用前必须被声明 。
  2. 声明包括:指定变量名, 可选的类型声明和 修饰符,分配初始值.
  3. 一旦被定义,变量将通过变量名来引用。
  4. Groovy 使用Java’的修饰符— private, protected, public final(不允许在分配值),static(为类变量),这些修饰符和Java中的意思相同。
  5. 非静态变量被看到对象变量
  6. Groovy  fields 默认的修饰符有着特别的意义(在GroovyBeans中讲解)。
  7. 变量类型的定义是可选的:但是假如你没有给出类型定义和修饰符定义,你必须使用def来定义变量,来说明此变量为未知类型(哈哈,希望大家能有点思维能力,其实外国人的东西都是套公式的东西,灵活运用在于你的思维能力了。前面说过Groovy一切都是对象,你用def关键字定义的变量,实际是默认值为Object
  8. 下面给出一些示例:
    class SomeClass {
    public fieldWithModifier
    String typedField
    def untypedField
    protected field1, field2, field3
    private assignedField = new Date()
    static classField
    public static final String CONSTA = 'a', CONSTB = 'b'
    def someMethod(){
    def localUntypedMethodVar = 1
    int localTypedMethodVar = 1
    def localVarWithoutAssignment, andAnotherOne
    }
    }
    def localvar = 1
    boundvar1 = 1
    def someMethod(){
    localMethodVar = 1
    boundvar2 = 1
    }
     
  9. 注意,这里有个规则:在Groovy中,比如你给一个动态类型分配了number类型的值,就不能再用String的类型了 ,反之亦然(在后面的章节会说明原因)。
  • Referencing and dereferencing fields
  1. 在Groovy中你可以通过obj.fieldName来引用变量,同时他提供了额外的能力,你可以使用下标运算符来引用,示例:
    class Counter {
    public count = 0
    }
    def counter = new Counter()
    counter.count = 1
    assert counter.count == 1
    def fieldName = 'count'
    counter[fieldName] = 2
    assert counter['count'] == 2
     
3
1
分享到:
评论
7 楼 qq39981143 2008-01-17  
呵呵,(Spairy)我来了,Java哥哥好“牛"啊!我都要努力,在努力!
6 楼 liliang_xf 2008-01-17  
每天半个小时。。我不到一晚上全看完咯。。。汗。。。快翻译啊!
5 楼 liliang_xf 2008-01-17  
老大,快出新专辑啊。期待。。。。
4 楼 Javabengou 2008-01-16  
最好的解决办法是自己动手测试
3 楼 JohnnyJian 2008-01-15  
“在Groovy中,比如你给一个动态类型分配了number类型的值,就不能再用String的类型了 ,反之亦然”
这句话是什么意思?是说赋值了number类型的值之后就不能赋值为string类型的值了?但是下面的代码是什么问题的呀:
def i = 1
i = 'abc'
是我理解错了吗?
2 楼 agile_boy 2008-01-14  
支持,能把你的Groovy系列也发布在Groory/Grails的圈子:http://grails.group.iteye.com/
么?
1 楼 xinyi7758521 2008-01-14  
加油!支持!

相关推荐

Global site tag (gtag.js) - Google Analytics