Java 和 Go 语言中的字面量(literals)在概念上是相似的,都是表示固定值的符号表示形式。然而,它们在语法和支持的类型上有一些区别:
- 整数字面量:- Java: 整数字面量可以是十进制、十六进制或二进制。Java 7 引入了二进制字面量表示法。
int decLiteral =123;// 十进制int hexLiteral =0x7B;// 十六进制int binLiteral =0b1111011;// 二进制(Java 7及以上)
- Go: 整数字面量同样可以是十进制、十六进制或二进制。Go 语言也支持指定整数的大小(如int
,int8
,int32
,int64
,uint
,uint8
,uint32
,uint64
)。var decLiteral int=123// 十进制var hexLiteral int=0x7B// 十六进制var binLiteral int=0b1111011// 二进制var bigLiteral int64=0x123456789ABCDEF// 大整数
- 浮点数字面量:- Java: 浮点数字面量通常带有小数点,可以是十进制或科学计数法。
double floatLiteral =123.45;// 十进制double sciLiteral =1.23e4;// 科学计数法
- Go: 浮点数字面量同样可以是十进制或科学计数法,并且 Go 语言区分float32
和float64
。var floatLiteral float64=123.45// 十进制var sciLiteral float64=1.23e4// 科学计数法
- 字符串字面量:- Java: 字符串字面量用双引号表示。
String str ="Hello, World!";
- Go: 字符串字面量可以用双引号或反引号(表示原始字符串)。var str string="Hello, World!"// 双引号var rawStr string=`Hello, World!`// 反引号,包含特殊字符
- 布尔字面量:- Java: 布尔字面量是
true
和false
。boolean flag =true;
- Go: 布尔字面量同样是true
和false
。 - 字符字面量:- Java: 字符字面量用单引号表示,可以是 ASCII 字符或 Unicode 字符。
char ch ='A';char unicodeChar ='\u0041';
- Go: 字符字面量也用单引号表示,可以是 ASCII 或 Unicode。var ch rune='A'// rune 是 Go 中表示 Unicode 字符的类型var unicodeChar rune='\u0041'
- 空字面量:- Java: 空字面量是
null
。String nullStr =null;
- Go: 空字面量是nil
。var nilStr *string=nil
- 复合字面量:- Java: 从 Java 9 开始,支持使用菱形符号
<>
来声明和初始化泛型实例。List<String> list =newArrayList<>();
- Go: 支持使用花括号{}
来创建数组、切片、映射和结构体的复合字面量。var arr [3]int=[3]int{1,2,3}var slice []int=[]int{1,2,3}var mapVal map[string]int=map[string]int{"one":1,"two":2}var structVal struct{Name string; Age int}=struct{Name:"Alice", Age:30}
尽管两种语言在字面量的表示上有许多相似之处,但它们在类型系统、语法和一些特定字面量的使用上有所不同。
版权归原作者 王伯爵 所有, 如有侵权,请联系我们删除。