Groovy(Java笨狗)系列--datatypes
- Java’s type system—primitives and references(原始值和引用)
- 在Groovy中,一切都是对象。
- Java 区分primitive types (比如:int, double, char, and byte) and reference types (比如: Object and String)。
- 对于primitive types (比如:int, double, char, and byte),他们只能定义相应的变量类型,而且不会存在方法。
- reference types(除了primitive types的任何类型)。
- 另一方面,操作符,比如a+b,a*b..只支持原始类型而不支持引用类型(当然也有例外,比如”+“支持String)。
- 对于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 Coderesults.add (first + second)
- 为了使Groovy完全面向对象,Groovy中移除了primitive types,任何时候,你在Groovy代码中看到类似于primitive types的变量,比如: number值为 5, 或者 Boolean 值为true,这些都是引用了适当的包装类型。
- automatic boxing and unboxing(自动装箱,拆箱)
- 或许automatic boxing and unboxing你在使用C#或者其他语言中碰到过。
- 转换primitive value 到包装类型实例i叫boxing。
- 倒转过来从一个包装类型到primitive value叫unboxing。
- Groovy完成这些操作都是自动的。
- 你已经知道,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中的装箱和拆箱自动完成的效果
- 通过图,我们来更好的理解他们之间的自动装箱和拆箱机制:
- 同时附上Groovy类型图标:
- 因为上面图表的都是Object,你就可以使用它们的方法了,同时,Groovy也支持操作符重载,你既可以使用方法来让两个数相加,同时也可以使用”+“实现两数相加,这些都是允许的。当然还有更多运算符。
Groovy(Java笨狗)系列--datatypes相关推荐
- Groovy(Java笨狗)系列---断言
假如你使用过JDK1.4或者更高版本,你一定熟悉assertions(断言)..通常,他会在你的代码中测试你的逻辑是否矛盾和正确. 接下来我们通过实例来学习Groovy中的断言,在学习之前,请务必记住 ...
- Groovy(Java笨狗)系列--Class,Scripts
Class是OOP编程的基础. 现在我们开始Class. 下面我们定义一个简单的Groovy类: class Book { private String title Book (String theT ...
- Groovy(Java笨狗)系列--fields and local variables
使用最简单的术语,a variable(变量): 变量名引用的值关联着物理内存的某个位置.和Java一样,Groovy拥有 local variables(本地变量),fields(字段):local ...
- Groovy(Java笨狗)系列-Working with closures(1)
翻译自<Groovy in action>,如有不准确之处,希望指教! closures(闭包)很重要,非常的 重要!!!可以被认为是Groovy中一个非常有用的特性.同时,在你没有完全了 ...
- Groovy(Java笨狗)系列---Getting Started(三)
(一).Setting up your Java environment(设置你的Java环境). Groovy需要Java,建议JDK1.4或者以上.假如你还没有安装Java,请按照下面的步骤来安装 ...
- Groovy on Grails(Java笨狗)系列---前言(二)
本系列的教材是由本人对官方文档的翻译,也算一个对学习的总结,对于原文档的所有权归原作者,译文为共享资源,但不能用于商业目的. 因为groovy,grails的语法发生了很多变化,可能现在互联网上的资料 ...
- Groovy on Grails(Java笨狗)系列---开篇(一)
Groovy 和Grails就不用介绍了 这两个系列主要是写给喜欢Groovy和Grails的朋友们 个人感觉 Groovy on Grails会在以后使我们对现在编程思想的改变,起码对于我自己来说是 ...
- Java笨狗groovy学习笔记—Regular Expressions
正則表達式就像一把瑞士軍刀. "potatoe" ==~ /potatoe/ 假如你在groovyConsole運行它,將返回true.這裡有兩件需要注意的事情: 1.==~操作符 ...
- Grails(Java笨狗)系列-更好的理解闭包(closure)
用现实生活中的示例来说明闭包 现在,让我们来考虑放在信封里的信纸.信纸里可能写着"x=5, y=10"等等一些内容.对于一个闭包(closure),信纸上可能写着一系列的指令.你可 ...
最新文章
- 关于代理服务器藏IP的一些问题(高手免看)
- 镜像的分层结构 - 每天5分钟玩转容器技术(11)
- 【流媒体服务器的搭建】1. 源码编译安装x264
- leetcode 169. 多数元素(不同数相消解法)
- 代码逆流成河,深入C++如何又快又有效?
- Vue + Spring Boot 项目实战(五):数据库的引入
- java 给对象创建实例_Java中创建(实例化)对象的五种方式
- webkit事件处理
- 用于Elasticsearch数据可视化和分析的强大工具
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
- 《编码-隐匿在计算机软硬背后的语言》第七章我们的十个数字
- 大道至简-第一张 伪代码
- 计算机的操作系统的那个好,电脑操作系统哪个最好用?
- 三菱伺服驱动器说明书_干货——PLC控制伺服系统(伺服电机)
- Macbook查看隐藏文件
- POSCMS LOGO替换
- 网友自曝取公积金血泪史 给你点希望又让你绝望
- 9个经典营销创业案例,彻底颠覆你的营销思维
- stm32读取目标芯片_PCF8563时钟读取芯片程序 STM32
- 用计算机控制单片机的程序编写,单片机程序编写步骤
热门文章
- 前端接入facebook jsSDK,实现登录授权功能
- android qq接口,手机QQ Scheme接口
- Bag标签之轻开B2C电子商务网站登录校验实例
- google adwords无法下载怎么办?
- 微型linux系统测试网卡,自制一个小型Linux(附带网络功能)
- 20190121——不慕神仙?不羡神仙! java中的单例模式
- 上海职称不用考计算机和英语翻译,国家翻译专业资格考试将替代职称评定
- 介绍计算机说明文,介绍电脑的说明文作文300字
- Calendars and DateFormats should not be static
- 微信服务号开发-获取用户位置信息