首页 > 其他分享 >Groovy语言知识点简要介绍

Groovy语言知识点简要介绍

时间:2024-10-29 15:44:47浏览次数:8  
标签:Groovy 知识点 简要 ### File println new def

语法规则

## 注释

**单行**注释使用 // 在该行的任==何位==置来识别。

**多行**注释标识与在开始 / ** / 识别多行注释的末尾。

## 分号

像 Java 编程语言,它需要具有**分号**在 Groovy 定义多个语句之间进行区分。

## 关键字

### 除java之外的特殊数字类型定义,如:

BigInteger bi = 30g;  //不可变的任意精度的有符号整数数字
println(bi); 

BigDecimal bd = 3.5g; //不可变的任意精度的有符号十进制数

### 大小写敏感

## 运算符

### 范围运算符

def range = 0..5 //定义了一个简单的整数范围,存储到一个局部变量称为范围内的下限为0和上限为5,即range=[0,5]
println(range.get(2)) //打印出7,索引值为2

# 文件I/O

## 读取文件

//方法eachLine内置在Groovy中的File类中,File类用于实例化以文件名作为参数的新对象。 
//然后它接受eachLine的函数,将它放到一个line的变量并相应地打印它。

new File("E:/Example.txt").eachLine {  
         line -> println "line : $line"; 
      } 

//文件类的text属性
File file = new File("E:/Example.txt") 

 

### 写入文件

new File('E:/','Example.txt').withWriter('utf-8') { 
         writer -> writer.writeLine 'Hello World' 
      } 
  • 获取文件大小:`.length()`
  • 是否是文件:`.isFile()`
  • 是否是目录:`.isDirectory()`
  • 创建目录:
    • //如果目录E:\ Directory不存在,将创建它。
      def file = new File('E:/Directory')
            file.mkdir()

  • 删除文件:`file.delete()`
  • 复制文件:
    // 将创建文件Example1.txt,并将文件Example.txt的所有内容复制到此文件。
    def src = new File("E:/Example.txt")
          def dst = new File("E:/Example1.txt")
          dst << src.text
  • 获取目录内容:
def rootFiles = new File("test").listRoots() 
      rootFiles.each { 
         file -> println file.absolutePath 
      }
  • 列出特定目录中的文件
    • new File("E:/Temp").eachFile() {  
               file->println file.getAbsolutePath()
            }

## Groovy的变量定义

可以不声明变量类型,此时为了不让代码库陷入无法维护的混乱,最好在应用程序中采用“鸭式输入”的理念。如:`def bfloat = 100.10`;

`cDouble`

### 包装类

Groovy 中的数字被定义为对象的原因通常是因为存在对数字执行操作的要求。在原始类型上提供类的概念被称为包装类。

 Integer x = 5,y = 10,z = 0; 
		
  // The the values of 5,10 and 0 are boxed into Integer types 
  // The values of x and y are unboxed and the addition is performed 
  z = x+y; 
  println(z);

### 字符串

Groovy中的字符串可以用单引号('),双引号(“)或三引号(”“”)括起来。此外,由三重引号括起来的Groovy字符串可以跨越多行。

### 范围

  • 1..10 - 包含范围的示例
  • 1 .. <10 - 独占范围的示例
  • 'a'..'x' - 范围也可以由字符组成
  • 10..1 - 范围也可以按降序排列
  • 'x'..'a' - 范围也可以由字符组成并按降序排列

### 日期和时间

`Date date = new Date(); //分配一个Date对象并初始化它,以便它表示分配的时间,以最近的毫秒为单位。`

Date date = new Date(100); //分配一个Date对象并将其初始化以表示自
//标准基准时间(称为“该历元”,即1970年1月1日,00:00:00 GMT)起指定的毫秒数。

### 正则表达式

`~`

### private

在任何编程语言中,总是使用private关键字隐藏实例成员,而是提供getter和setter方法来相应地设置和获取实例变量的值。

### Groovy 泛型

与在方法声明中使用的更熟悉的形式参数非常类似,类型参数提供了一种方法,可以为不同的输入重复使用相同的代码。区别在于形式参数的输入是值,而类型参数的输入是类型。

  • 集合:

//显示了一般化ArrayList的示例。以下语句的作用是它只接受类型为string的列表项
List<String> list = new ArrayList<String>();

  • 泛型类:

ListType<Integer> lstint = new ListType<>();

ListType<String> lststr = new ListType<>();

# Groovy特征

特征是语言的结构构造,允许 -

  • 行为的组成。
  • 接口的运行时实现。
  • 与静态类型检查/编译的兼容性

  1. ==使用trait关键字定义:==
    trait Marks {
       void DisplayMarks() {
          println("Display Marks");
       } 
    }
    
    //使用 implement 关键字以类似于接口的方式实现 trait。
    class Student implements Marks { 
       int StudentID
       int Marks1;
    }

  1. ==实现接口:使用 interface 关键字声明接口。==
    1. interface Total {
         void DisplayTotal() 
      } 
      
      trait Marks implements Total {
         void DisplayMarks() {
            println("Display Marks");
         }
  1. 定义属性
    1. trait Marks implements Total {
            int Marks1;              //定义属性
              
            void DisplayMarks() {
               this.Marks1 = 10;
               println(this.Marks1);
            }
      }

  1. 扩展特征
    1. trait Marks {
         void DisplayMarks() {
            println("Marks1");
         } 

      trait Total extends Marks {
         void DisplayMarks() {
            println("Total");
         } 
      }  

## 闭包

  • 一个方法甚至可以将代码块作为参数
  • 闭包也可以包含形式参数
  • 闭包也接受变量和参数。

class Example {
   static void main(String[] args) {
      def clos = {println "Hello World"};
      clos.call();
   } 
}

# Groovy注释

在Groovy中,基本注释如下所示:

  • ==@interface== - at符号字符(@向编译器指示以下是注释)
  • 注释可以以没有主体的方法的形式和可选的默认值来定义成员。

## XML

可扩展标记语言XML是一种非常类似于HTML或SGML的标记语言。这是万维网联盟推荐的,可作为开放标准。XML对于跟踪少量到中等数据量而不需要基于SQL的骨干非常有用。

import groovy.xml.MarkupBuilder 

class Example {
   static void main(String[] args) {
      def mB = new MarkupBuilder()

### JMX

import java.lang.management.*

def os = ManagementFactory.operatingSystemMXBean 

### Json

使用JsonSlurper解析数据

def slurper = new JsonSlurper()

### DSLS

DSL或域特定语言旨在简化以Groovy编写的代码,使得它对于普通用户变得容易理解。以下示例显示了具有域特定语言的确切含义。

### 数据库

Groovy的groovy-sql模块提供了比当前Java的JDBC技术更高级的抽象。Groovy sql API支持各种各样的数据库,其中一些如下所示。

HSQLDB Oracle SQL Server MySQL MongoDB

可以对以上数据库进行增删改查等操作。

## 构建器

### Swing构建器:

在groovy中,还可以使用groovy中提供的<u>swing构建器创建图形用户界面</u>。开发swing组件的主要类是SwingBuilder类。这个类有许多方法创建图形组件,如 -

  • JFrame - 这是用于创建框架元素。
  • JTextField - 这用于创建textfield组件。

让我们看一个简单的例子,如何使用**SwingBuilder**类创建一个Swing应用程序。在以下示例中,您可以看到以下几点 -

您需要导入**groovy.swing.SwingBuilder和javax.swing.***类。

在Swing应用程序中显示的所有组件都是SwingBuilder类的一部分。

对于框架本身,您可以指定框架的初始位置和大小。您还可以指定框架的标题。

您需要将Visibility属性设置为true才能显示框架。

### DOM生成器

DOM构建器可用于解析HTML,XHTML和XML,并将其转换为W3C DOM树。

def rd = new StringReader(records) 
def doc = groovy.xml.DOMBuilder.parse(rd)

### JsonBuilder

JsonBuilder用于创建json类型的对象。

def builder = new groovy.json.JsonBuilder() 

### NodeBuilder

// NodeBuilder用于创建Node对象的嵌套树以处理任意数据。下面显示了Nodebuilder的用法示例。
def nodeBuilder = new NodeBuilder() 

### FileTreeBuilder

FileTreeBuilder是一个从规范**生成文件目录结构**的构建器。

# Groovy 单元测试

JUnit是一个开源测试框架,是Java代码自动化**单元测试**的公认行业标准。幸运的是,JUnit框架可以很容易地用于测试Groovy类。所需要的只是扩展作为标准Groovy环境一部分的GroovyTestCase类。 Groovy测试用例类基于Junit测试用例。

**Groovy测试套件**

## Groovy 模板引擎

  • 字符串中的简单模板:$符号来定义可以插入值的参数或模板
  • SimpleTemplateEngine
  • StreamingTemplateEngine
  • XMLTemplateEngine

## Groovy Shebang行

除了单行注释外, 还有一种被特别的行注释, 通常被称作shebang行,它通常在UNIX系统中被认知,它容许脚本直接在命令行中运行那些你已经安装的Groovy和那些已经在PATH中可用的groovy命令。

#!/usr/bin/env groovy

println "Hello from the shebang line"

标签:Groovy,知识点,简要,###,File,println,new,def
From: https://blog.csdn.net/qq_42935045/article/details/143308936

相关文章

  • C#01-C#知识点
    @目录0.什么是C#?1.什么是类?2.面向对象编程的主要概念是什么?3.什么是对象?4.什么是构造函数,它有哪些不同的类型?5.C#中的析构函数是什么?6.C#代码是托管代码还是非托管代码?7.什么是值类型和引用类型?8.什么是命名空间,它是强制性的吗?9.用例子解释C#中的注释类型10.请解释封装11.什......
  • C++ 网络编程 IO多路复用、select、poll、epoll知识点总结
    1.什么是I/O多路复用?I/O多路复用(I/OMultiplexing)是一种编程技术,允许一个线程或进程同时管理多个I/O通道(如文件描述符、套接字等)。它使得单个进程能够在不使用多个线程或进程的情况下,同时处理多个I/O操作。这在网络编程和高性能服务器中尤为重要,因为它可以有效地利用系......
  • 三维变换矩阵知识点
    一、行矩阵与列矩阵、行主序与列主序行主序和列主序影响如何在内存中访问和存储矩阵数据,与行矩阵和列矩阵的概念没有直接的关系行矩阵与列矩阵:行矩阵:        $$\begin{pmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{pmatrix}$$列矩阵:指的是矩阵的元......
  • python知识点100篇系列(23)- 使用stylecloud生成词云
    使用stylecloud生成词云stylecloud是wordcloud优化版,相对来说操作更简单;一个很方便的功能是,可以使用FontAwesome提供的免费图标更改词云的形状;FontAwesome提供的免费图标库参考这里安装所需库主要是安装一下分词用到的jieba和生成词云使用的stylecloud安装方式......
  • 大数据技术知识点小结
     一、数据采集 1. 数据源:包括结构化数据(如数据库中的数据)、半结构化数据(如XML、JSON等)和非结构化数据(如文本、图像、音频、视频等)。2. 采集工具:如Flume、Sqoop等,用于从不同的数据源抽取数据并传输到大数据存储系统中。 二、数据存储 1. Hadoop分布式文件系......
  • 计算机网络的主要知识点小结
    计算机网络是指将多台计算机通过通信线路连接起来,实现资源共享和信息传递的系统。一、计算机网络概述 1. 定义和功能 -定义:计算机网络是将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理......
  • C语言和Groovy在JVM兼容性上的区别
    ##C语言和Groovy在JVM兼容性上的区别在探讨C语言和Groovy在JVM(Java虚拟机)兼容性上的差异时,核心观点可以概括为:C语言不直接兼容JVM、Groovy与JVM高度兼容。C语言是一种通用的、过程式的编程语言,它直接编译为机器语言,执行效率高,但它并不直接兼容JVM,这是因为JVM是为运行Java字节码......
  • python知识点
    id()获取数据(对象)的内存地址is比较是地址是否相同,==是比较值是否相同代码块缓存机制(适用类型:int(float)、bool、str同一代码块)      执行同一个代码块时,遇到初始化对象的命令时,他会将初始化的这个变量与值存储在一个字典中,在遇到新的变量时,会先在字典中查询记 ......
  • JavaWeb知识点总结 我的学习笔记
    JavaWeb我的学习笔记一、动态网页开发1.动态网页2.系统架构C/S架构B/S架构B/S与C/S的比较3.URL通信三要素4.Tomcat服务器二、Servlet1.Servlet简介2.Servlet快速入门入门样例执行原理3.Servlet的体系结构4.servlet的十大方法5.Servlet生命周期6.在web.xml中配置servl......
  • CAD知识点概览 CAD数据交换与二次开发
    CAD知识点概览章节目录一、CAD基础概念与应用领域二、CAD软件界面与基本操作三、二维绘图与编辑四、尺寸标注与文字标注五、三维建模与编辑六、视图显示控制与打印输出七、图层管理与数据库管理八、CAD数据交换与二次开发九、CAD学习方法与资源推荐一、CAD基础概念与应用......