java中字面量和golang中字面量区别

Java 和 Go 语言中的字面量(literals)在概念上是相似的,都是表示固定值的符号表示形式。然而,它们在语法和支持的类型上有一些区别:

  1. 整数字面量:

    • Java : 整数字面量可以是十进制、十六进制或二进制。Java 7 引入了二进制字面量表示法。

      java 复制代码
      int decLiteral = 123;    // 十进制
      int hexLiteral = 0x7B;   // 十六进制
      int binLiteral = 0b1111011; // 二进制(Java 7及以上)
    • Go : 整数字面量同样可以是十进制、十六进制或二进制。Go 语言也支持指定整数的大小(如 int, int8, int32, int64, uint, uint8, uint32, uint64)。

      go 复制代码
      var decLiteral int = 123   // 十进制
      var hexLiteral int = 0x7B  // 十六进制
      var binLiteral int = 0b1111011 // 二进制
      var bigLiteral int64 = 0x123456789ABCDEF // 大整数
  2. 浮点数字面量:

    • Java : 浮点数字面量通常带有小数点,可以是十进制或科学计数法。

      java 复制代码
      double floatLiteral = 123.45;  // 十进制
      double sciLiteral = 1.23e4;     // 科学计数法
    • Go : 浮点数字面量同样可以是十进制或科学计数法,并且 Go 语言区分 float32float64

      go 复制代码
      var floatLiteral float64 = 123.45  // 十进制
      var sciLiteral float64 = 1.23e4   // 科学计数法
  3. 字符串字面量:

    • Java : 字符串字面量用双引号表示。

      java 复制代码
      String str = "Hello, World!";
    • Go : 字符串字面量可以用双引号或反引号(表示原始字符串)。

      go 复制代码
      var str string = "Hello, World!" // 双引号
      var rawStr string = `Hello, World!` // 反引号,包含特殊字符
  4. 布尔字面量:

    • Java : 布尔字面量是 truefalse

      java 复制代码
      boolean flag = true;
    • Go : 布尔字面量同样是 truefalse

  5. 字符字面量:

    • Java : 字符字面量用单引号表示,可以是 ASCII 字符或 Unicode 字符。

      java 复制代码
      char ch = 'A';
      char unicodeChar = '\u0041';
    • Go : 字符字面量也用单引号表示,可以是 ASCII 或 Unicode。

      go 复制代码
      var ch rune = 'A' // rune 是 Go 中表示 Unicode 字符的类型
      var unicodeChar rune = '\u0041'
  6. 空字面量:

    • Java : 空字面量是 null

      java 复制代码
      String nullStr = null;
    • Go : 空字面量是 nil

      go 复制代码
      var nilStr *string = nil
  7. 复合字面量:

    • Java : 从 Java 9 开始,支持使用菱形符号 <> 来声明和初始化泛型实例。

      java 复制代码
      List<String> list = new ArrayList<>();
    • Go : 支持使用花括号 {} 来创建数组、切片、映射和结构体的复合字面量。

      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}

尽管两种语言在字面量的表示上有许多相似之处,但它们在类型系统、语法和一些特定字面量的使用上有所不同。

相关推荐
查理零世16 分钟前
【蓝桥杯集训·每日一题2025】 AcWing 6134. 哞叫时间II python
python·算法·蓝桥杯
10km22 分钟前
java:Apache Commons Configuration2占位符解析异常的正确解法:${prefix:name:-default}
java·apache·configuration2·变量插值·interpolation
customer0823 分钟前
【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
紫雾凌寒25 分钟前
解锁机器学习核心算法|神经网络:AI 领域的 “超级引擎”
人工智能·python·神经网络·算法·机器学习·卷积神经网络
灰色人生qwer30 分钟前
SpringBoot 项目配置日志输出
java·spring boot·后端
sun lover38 分钟前
conda简单命令
python·conda
2301_7930698240 分钟前
Spring Boot +SQL项目优化策略,GraphQL和SQL 区别,Spring JDBC 等原理辨析(万字长文+代码)
java·数据库·spring boot·sql·jdbc·orm
阿华的代码王国1 小时前
【从0做项目】Java搜索引擎(6)& 正则表达式鲨疯了&优化正文解析
java·后端·搜索引擎·正则表达式·java项目·从0到1做项目
服务端相声演员1 小时前
Oracle JDK、Open JDK zulu下载地址
java·开发语言
是姜姜啊!1 小时前
java连接redis
java·redis