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

Groovy(Java笨狗)系列--datatypes

阅读更多
  • Java’s type system—primitives and references(原始值和引用)
  1. 在Groovy中,一切都是对象。
  2. Java 区分primitive types (比如:int, double, char, and byte) and reference types (比如: Object and String)。
  3. 对于primitive types (比如:int, double, char, and byte),他们只能定义相应的变量类型,而且不会存在方法。
  4. reference types(除了primitive types的任何类型)。
  5. 另一方面,操作符,比如a+b,a*b..只支持原始类型而不支持引用类型(当然也有例外,比如”+“支持String)。
  6. 对于primitive types类型的操作,他们有相应的包装类型,当你从int到Integer,或者其他类型,都需要进行转换。
    // Java code!
    ArrayList results = new ArrayList();
    for (int i=0; i < listOne.size(); i++)
    {
    Integer first = (Integer)listOne.get(i);
    Integer second = (Integer)listTwo.get(i);
    int sum = first.intValue()+second.intValue();
    results.add (new Integer(sum));
    }
     上面的代码进行了转换,得到相应的结果。那么看下Groovy对于一些都是对象这句话,是怎么做的,稍后会跟大家说下其中的原理。
    results.add (first.plus(second))
     上面的代码,其实没有任何的转换操作,很简单的运用了Groovy内置的方法来实现。
    // Java
    int sum = first.intValue()+second.intValue();
    results.add (new Integer(sum));
     
    //Groovy Code
    
    results.add (first + second)
     
  7. 为了使Groovy完全面向对象,Groovy中移除了primitive types,任何时候,你在Groovy代码中看到类似于primitive types的变量,比如: number值为 5, 或者 Boolean 值为true,这些都是引用了适当的包装类型。
  • automatic boxing and unboxing(自动装箱,拆箱)
  1. 或许automatic boxing and unboxing你在使用C#或者其他语言中碰到过。
  2. 转换primitive value 到包装类型实例i叫boxing
  3. 倒转过来从一个包装类型到primitive valueunboxing。
  4. Groovy完成这些操作都是自动的。
  5. 你已经知道,Groovy被设计成能和Java很好一起工作的语言。因此当Java方法取得primitive参数或者返回primitive发生了什么?我们该怎样从Groovy中调用那些方法?考虑已存在的方法java.lang.String class: int indexOf (int ch).在Groovy中你可以这样来使用:
    assert 'ABCDE'.indexOf(67) == 2
     以Groovy的观点来看,上面传递了包含67的Integer,虽然方法中希望的值类型为int.其实这也就是Groovy中的装箱和拆箱自动完成的效果
  6. 通过图,我们来更好的理解他们之间的自动装箱和拆箱机制:
  7. 同时附上Groovy类型图标:
  8. 因为上面图表的都是Object,你就可以使用它们的方法了,同时,Groovy也支持操作符重载,你既可以使用方法来让两个数相加,同时也可以使用”+“实现两数相加,这些都是允许的。当然还有更多运算符。
3
0
分享到:
评论
4 楼 wokaoleaikao 2008-01-14  
有中文看的感觉真好!
3 楼 wokaoleaikao 2008-01-14  
初学者,收下了
2 楼 jiyanliang 2008-01-14  
支持原创,继续努力
1 楼 xinyi7758521 2008-01-11  
支持 , 顶一下!

相关推荐

    Groovy and Grails Recipes(清晰PDF)

    Groovy Data Types and Control Structures** - **介绍**: 这一章节详细讲解了Groovy中的数据类型以及控制结构。 - **核心知识点**: - Groovy的基本数据类型(如数字、字符串等) - 集合数据结构(列表、集合、...

    Groovy in Action

    **第3章: The Simple Groovy Data Types** - **内容概述**: 详细介绍Groovy中的基本数据类型及其用法。 - **知识点**: Groovy中的数字类型、字符类型、布尔类型等。 - **学习目标**: 熟练使用Groovy中的各种数据类型...

    Groovy in action

    Groovy in Action quickly moves through the Groovy basics, including:, # Simple and collective Groovy data types, # Working with Closures and Groovy Control Structures, # Dynamic Object Orientation, ...

    groovy将JDBC中oracle存储过程游标转换为多层json

    ### Groovy将JDBC中Oracle存储过程游标转换为多层JSON 在本文档中,我们将探讨如何使用Groovy脚本结合JDBC技术从Oracle存储过程中获取数据,并将其转换为多层JSON格式。该方法特别适用于需要从XML输入中提取数据并...

    Spring Boot CLI使用教程

    $ spring init --build=gradle --java-version=1.8 --dependencies=websocket --packaging=war sample-app.zip ``` Using service at https://start.spring.io Content saved to 'sample-app.zip' Spring Boot CLI...

    android studio上使用zxing-android-embedded实现二维码生成和扫描

    ```groovy dependencies { implementation 'com.journeyapps:zxing-android-embedded:3.6.0' } ``` 然后,同步Gradle项目,使依赖生效。此时,你已经具备了使用ZXing进行二维码操作的基础。 接下来,我们创建一个...

    spring-boot-reference.pdf

    Merging Complex Types 24.7.4. Properties Conversion Converting durations 24.7.5. @ConfigurationProperties Validation 24.7.6. @ConfigurationProperties vs. @Value 25. Profiles 25.1. Adding Active ...

    Android Studio打包和gradle配置构建

    **Gradle** 是一个基于 Java 的项目自动化构建工具,它通过一种基于 Groovy 的特定领域语言(DSL) 来编写构建脚本。在 Android 开发中,Gradle 被广泛用于自动化构建过程。 #### 二、生成签名 APK 1. **生成签名...

    ZXing-2.2 源码及编译后的jar包

    integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES); integrator.setCameraId(0); // 选择后置摄像头 integrator.initiateScan(); ``` 然后在`onActivityResult`中处理扫描结果: ```java @...

    zxing库扫码获取相册扫描,这个很好用

    ```groovy allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.journeyapps:zxing-android-embedded:3.6.0' } ``` ZXing库提供了一个`...

    Grails结合uploadify上传文件的简单代码

    Grails是一款基于Groovy语言的、高效的Web应用开发框架,它简化了Java平台上的开发流程。uploadify则是一个JavaScript库,它允许用户通过异步方式上传文件,提供友好的用户体验。 首先,我们需要在Grails项目中引入...

    安卓开发-android 实现竖屏二维码扫描.zip.zip

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setCaptureActivity(ScannerActivity.class); integrator.initiateScan(); ``` 四、处理扫描结果 当用户扫描到二维码时,你...

    安卓生成 二维码 扫描二维码可从相册选

    ```groovy dependencies { implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' } ``` 2. 生成二维码:在代码中,创建一个Bitmap对象并使用ZXing的...

    Android zxing生成 扫描二维码(依赖形式)

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setCameraId(0); // 使用前置或后置摄像头 integrator.setBeepEnabled(false); // 是否开启扫描成功提示音 integrator....

    Android应用源码使用ZXing识别条码二维码(简单的实现).zip

    ```groovy implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` ZXing的核心库(core)提供了条码和二维码的解码功能,而`zxing-android-embedded`...

    使用ZXing识别条码二维码(简单的实现).zip

    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("扫描二维码"); integrator.setCameraId(0); // 选择后置摄像头 integrator.setBeepEnabled(false); integrator....

    Android开发二维码的生成和扫一扫功能的实现

    ```groovy implementation 'com.google.zxing:core:3.4.1' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` 接下来,我们来讲解如何实现二维码的生成。ZXing库提供了`MultiFormatWriter`类,...

Global site tag (gtag.js) - Google Analytics