Groovy 数据类型详解

2019-04-27 16:45|来源: 网路

在任何编程语言中,需要使用各种变量来存储各种类型的信息。变量只是保留值的存储位置,这意味着,当你创建一个变量,你保留在内存中的一些空间来存储与变量相关的值。

您可能喜欢存储各种数据类型的信息,如字符串,字符,宽字符,整数,浮点数,布尔值等。基于变量的数据类型,操作系统分配内存并决定什么可以存储在保留的存储器中。

内置数据类型

Groovy提供多种内置数据类型。以下是在Groovy中定义的数据类型的列表 -

  • byte -这是用来表示字节值。例如2。

  • short -这是用来表示一个短整型。例如10。

  • int -这是用来表示整数。例如1234。

  • long -这是用来表示一个长整型。例如10000090。

  • float -这是用来表示32位浮点数。例如12.34。

  • double -这是用来表示64位浮点数,这些数字是有时可能需要的更长的十进制数表示。例如12.3456565。

  • char -这定义了单个字符文字。例如“A”。

  • Boolean -这表示一个布尔值,可以是true或false。

  • String -这些是以字符串的形式表示的文本。例如,“Hello World”的。

绑定值

下表显示了数字和小数点文字中的最大允许值。

byte -128到127
short -32,768到32,767
int 2,147,483,648 到,147,483,647
long -9,223,372,036,854,775,808到+9,223,372,036,854,775,807
float 1.40129846432481707e-45到3.40282346638528860e + 38
double 4.94065645841246544e-324d 到1.79769313486231570e + 308d

数字类

类型除了基本类型,还允许以下对象类型(有时称为包装器类型)-

  • java.lang.Byte

  • java.lang.Short

  • java.lang.Integer

  • java.lang.Long

  • java.lang.Float

  • java.lang.Double

此外,以下类可用于支持高精度计算 -

名称 描述 例如
java.math.BigInteger 不可变的任意精度的有符号整数数字 30克
java.math.BigDecimal 不可变的任意精度的有符号十进制数 3.5克

以下代码示例说明如何使用不同的内置数据类型 -

class Example { 
   static void main(String[] args) { 
      //Example of a int datatype 
      int x = 5; 
		
      //Example of a long datatype 
      long y = 100L; 
		
      //Example of a floating point datatype 
      float a = 10.56f; 
		
      //Example of a double datatype 
      double b = 10.5e40; 
		
      //Example of a BigInteger datatype 
      BigInteger bi = 30g; 
		
      //Example of a BigDecimal datatype 
      BigDecimal bd = 3.5g; 
		
      println(x); 
      println(y); 
      println(a); 
      println(b); 
      println(bi); 
      println(bd); 
   } 
}


当我们运行上面的程序,我们会得到以下结果 -

5 
100 
10.56 
1.05E41 
30 
3.5

相关问答

更多
  • 我假设你看过这篇关于分页的博文 ? 要回答你的问题,如果我们在Groovy中查看Sql类的代码,我们可以看到rows(String,int,int)的代码调用rows(String,int,int,null) 而代码是: AbstractQueryCommand command = createQueryCommand(sql); ResultSet rs = null; try { rs = command.execute(); List
  • 请改用testArray = [:] 。 这不是一个数组而是一个地图 (具体的LinkedHashMap和[:]是Groovy用来创建它的文字)。 Java / Groovy中的地图是用于存储键值关系的关联数据结构。 通过map[key]访问是Groovy带来的增强功能。 Use testArray = [:] instead. And this is not an array but a map (a LinkedHashMap to be specific and [:] is the literal ...
  • XmlSlurper和XmlParser之间的最大区别在于Parser将创建类似DOM的内容,而Slurper只有在真正需要时才尝试创建结构,因此使用了懒惰评估的路径。 对于用户来说,可以看起来非常平等。 不同之处在于,解析器结构仅被评估一次,可以根据需要评估消耗路径。 在这里可以看出“更高的记忆效率,但更慢”。 最终取决于你做的路径/请求数量。 例如,如果您只想知道XML中某个特定部分的属性值,然后再使用它,XmlParser仍然会处理所有的并在准DOM上执行查询。 在那里将创建很多对象,内存和CPU支出 ...
  • 要确定一个对象的类,只需调用: someObject.getClass() 在大多数情况下,您可以将其缩写为someObject.class 。 但是,如果您在Map上使用此功能,它将尝试使用“class”键检索该值。 因为这样,我总是使用getClass() ,尽管它还有一段时间。 如果要检查对象是否实现特定接口或扩展特定类(例如Date),请使用: (somObject instanceof Date) 或者检查对象的类是否是一个特定的类(不是它的子类),请使用: (somObject.getCla ...
  • 这很简单,可以理解吗? def doSomething(a, b){ a + b } //Type inferred to String assert "HelloWorld" == doSomething('Hello','World') assert "String" == doSomething('Hello','World').class.simpleName //Type inferred to Integer assert 5 == doSomething(2,3) assert "I ...
  • 编码是一个棘手的问题,因为你不能总是相信你看到的东西。 通常使用utf-8就足以解决问题。 确保你在任何地方使用它,但 - oracle服务器,oracle客户端(jdbc),groovy文件等。请注意,java使用utf-16。 jdbc驱动程序应该为你做这个转换。 最好的建议是,java(和groovy)完成他们所说的字符编码,所以问题不在那里。 确保您有工具可以让您检查系统中每个方面的实际位(十六进制值)。 在MySQL中 - 它只是十六进制: http : //dev.mysql.com/doc/r ...
  • 就像tim_yates上面提到的那样, flush在我的情况下解决了问题。 FileWriter writer = new FileWriter("DATA${new Date().time.toString()}.txt") writer.write("Count, Rate\n") writer.flush() Just like tim_yates mentiones above, flush solved the problem in my case. FileWriter writer = ne ...
  • 它看起来像反编译的groovy代码或从groovy生成的java代码。 让我们看看简单的groovy脚本: cfg = new ConfigObject() ConfigObject c = cfg 将脚本变量cfg值赋值为java中的本地类型定义的c变量的行将如下所示: ScriptBytecodeAdapter.setGroovyObjectProperty(localObject, Script61235.class, this, (String)"cfg"); ConfigObject c = ( ...
  • 对于fetchSize ,这似乎是唯一的选择, withStatement() ; 需要Closure 这里有一个例子, sql.withStatement { stmt -> stmt.fetchSize = 50 } 对于maxResult ,可用的选项很少, 使用带有maxRows参数的重载的rows()方法,或 你可以使用asList()方法获取maxRows参数,或者 使用eachRow() maxRows参数的eachRow() 注意:有很多重载方法名为rows(..) , asList(. ...
  • 要从查询结果集中获取SQL类型,您需要结果集的ResultSetMetaData 。 幸运的是,Groovy Sql提供了一种获取它的方法。 这有点奇怪,但它有效: def columnTypes = [:] def metaClosure = { metaData -> /* I'm called once by Sql.eachRow() with a ResultSetMetaData. */ columnTypes = (1..metaData.columnCount).collec ...