Java9新特性
Java 9 新特性 Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。接下来我们会详细介绍 Java 9 的新特性。 Java 9 新特性 模块系统:模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目)。 REPL (JShell):交互式编程环境。 HTTP 2 客户端:HTTP/2标准是HTTP协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性。 改进的 Javadoc:Javadoc 现在支持在 API 文档中的进行搜索。另外,Javadoc 的输出现在符合兼容 HTML5 标准。 多版本兼容 JAR 包:多版本兼容 JAR 功能能让你创建仅在特定版本的 Java 环境中运行库程序时选择使用的 class 版本。集合工厂方法:List,Set 和 Map 接口中,新的静态工厂方法可以创建这些集合的不可变实例。私有接口方法:在接口中使用private私有方法。我们可以使用 private...
Java8新特性
Java 8 新特性Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 新特性Java8 新增了非常多的特性,我们主要讨论以下几个: Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。Date Time API − 加强对日期与时间的处理。Optional 类 − Optional...
Go错误处理
Go 错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 Go 语言的错误处理采用显式返回错误的方式,而非传统的异常处理机制。这种设计使代码逻辑更清晰,便于开发者在编译时或运行时明确处理错误。 Go 的错误处理主要围绕以下机制展开:error 接口:标准的错误表示。显式返回值:通过函数的返回值返回错误。自定义错误:可以通过标准库或自定义的方式创建错误。panic 和 recover:处理不可恢复的严重错误。error 接口Go 标准库定义了一个 error 接口,表示一个错误的抽象。error 类型是一个接口类型,这是它的定义: type error interface { Error() string} 实现 error 接口:任何实现了 Error() 方法的类型都可以作为错误。Error() 方法返回一个描述错误的字符串。使用 errors 包创建错误我们可以在编码中通过实现 error 接口类型来生成错误信息。创建一个简单错误:实例package main import ( “errors” “fmt”) func main() { ...
Go语言递归函数
Go 语言递归函数 递归,就是在运行的过程中调用自己。 语法格式如下: func recursion() { recursion() /* 函数调用自身 */} func main() { recursion()} Go 语言支持递归。但我们在使用递归时,开发者需要设置退出条件,否则递归将陷入无限循环中。递归函数对于解决数学上的问题是非常有用的,就像计算阶乘,生成斐波那契数列等。 阶乘以下实例通过 Go 语言的递归函数实例阶乘:实例package main import “fmt” func Factorial(n uint64)(result uint64) { if (n > 0) { result = n * Factorial(n-1) return result } return 1} func main() { var i int = 15 fmt.Printf(“%d 的阶乘是 %d\n”, i,...
Go语言运算符
Go 语言运算符运算符用于在程序运行时执行数学或逻辑运算。Go 语言内置的运算符有: 算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符 接下来让我们来详细看看各个运算符的介绍。 算术运算符下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符描述实例+相加 A + B 输出结果 30-相减 A - B 输出结果 -10*相乘 A * B 输出结果 200/相除 B / A 输出结果 2%求余 B % A 输出结果 0++自增 A++ 输出结果 11–自减 A– 输出结果 9 以下实例演示了各个算术运算符的用法:实例package main import “fmt” func main() { var a int = 21 var b int = 10 var c int c = a + b fmt.Printf(“第一行 - c 的值为 %d\n”, c ) c = a - b fmt.Printf(“第二行 - c 的值为 %d\n”, c ) ...
Go语言范围(Range)
Go 语言范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。 for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:for key, value := range oldMap { newMap[key] = value} 以上代码中的 key 和 value 是可以省略。如果只想读取 key,格式如下:for key := range oldMap或者这样:for key, _ := range oldMap如果只想读取 value,格式如下:for _, value := range oldMap 实例数组和切片遍历简单的切片,2**%d 的结果为 2 对应的次方数:实例package main import “fmt” // 声明一个包含 2...
Go语言结构体
Go 语言结构体Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性: Title :标题Author : 作者Subject:学科ID:书籍ID 定义结构体结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。结构体的格式如下:type struct_variable_type struct { member definition member definition … member definition} 一旦定义了结构体类型,它就能用于变量的声明,语法格式如下: variable_name := structure_variable_type {value1, value2…valuen}或variable_name := structure_variable_type {...
Go语言结构
Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例Go 语言的基础组成有以下几个部分: 包声明引入包函数变量语句 & 表达式注释 接下来让我们来看下简单的代码,该代码输出了”Hello World!”:实例package main import “fmt” func main() { /* 这是我的第一个简单的程序 */ fmt.Println(“Hello, World!”)} 让我们来看下以上程序的各个部分: 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。下一行 import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。下一行 func main()...
Go语言类型转换
Go 语言类型转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go 语言类型转换基本格式如下: type_name(expression) type_name 为类型,expression 为表达式。数值类型转换将整型转换为浮点型: var a int = 10var b float64 = float64(a) 以下实例中将整型转化为浮点型,并计算结果,将结果赋值给浮点型变量:实例package main import “fmt” func main() { var sum int = 17 var count int = 5 var mean float32 mean = float32(sum)/float32(count) fmt.Printf(“mean 的值为: %f\n”,mean)} 以上实例执行输出结果为: mean 的值为: 3.400000 字符串类型转换 将一个字符串转换成另一个类型,可以使用以下语法: var str string =...
Go语言环境安装
Go 语言环境安装Go 语言支持以下系统: LinuxFreeBSDMac OS X(也称为 Darwin)Windows 安装包下载地址为:https://go.dev/dl/。如果打不开可以使用这个地址:https://golang.google.cn/dl/。各个系统对应的包名: 操作系统包名Windowsgo1.4.windows-amd64.msiLinuxgo1.4.linux-amd64.tar.gzMacgo1.4.darwin-amd64-osx10.8.pkgFreeBSDgo1.4.freebsd-amd64.tar.gz UNIX/Linux/Mac OS X, 和 FreeBSD 安装以下介绍了在UNIX/Linux/Mac OS X, 和 FreeBSD系统下使用源码安装方法:1、下载二进制包:go1.4.linux-amd64.tar.gz。2、将下载的二进制包解压至 /usr/local目录。tar -C /usr/local -xzf...