【问题标题】:Is there a difference between single and double quotes in Java?Java中的单引号和双引号有区别吗?
【发布时间】:2010-10-01 04:03:01
【问题描述】:

Java中的单引号和双引号有区别吗?

【问题讨论】:

    标签: java syntax


    【解决方案1】:

    对文字chars 使用单引号,对文字Strings 使用双引号,如下所示:

    char c = 'a';
    String s = "hello";
    

    它们不能以任何其他方式使用(例如在 Python 中)。

    【讨论】:

    • 而且,当然,这种行为是从 C 中借来的(我想可能是从其他地方得到的)。
    • 对我来说,在这种情况下,撇号文字会自动转换为 int。所以它不需要是char。值得投反对票……太简单了。
    • @Klaider 你能详细说明一下吗?某些字符不会转换为字符吗?
    • @ngood97 我的评论是希望撇号自动适应 Java 中的 int (int c = 'a';),但它已经过时了。实际上,我的 ECMAScript 方言具有自动适应 Char (var ch:Char = "a";) 的字符串文字。
    • 哦,所以 java 实际上并没有将字符文字转换为 int。顺便说一句,您指的是哪种 ECMAScript 方言使用这种语法?
    【解决方案2】:

    char 是单个 UTF-16 字符,即字母、数字、标点符号、制表符、空格或类似的东西。

    char 字面量是像这样用单引号括起来的单个字符

    char myCharacter = 'g'; 
    

    或转义序列,甚至是 unicode 转义序列:

    char a = '\t';    // Escape sequence: tab
    char b = '\177'   // Escape sequence, octal.
    char c = '\u03a9' // Unicode escape sequence. 
    

    值得注意的是,Unicode 转义序列在编译过程中很早就被处理,因此使用 '\u00A' 会导致编译器错误。对于特殊符号,最好使用转义序列,即 '\n' 而不是 '\u00A' 。

    双引号用于String,您必须在字符串中使用“双引号转义序列”(\"),否则它会终止字符串。
    例如:

    System.out.println("And then Jim said, \"Who's at the door?\"");
    

    没有必要在单引号内转义双引号。
    以下行在 Java 中是合法的:

    char doublequote = '"';
    

    【讨论】:

      【解决方案3】:

      让我们考虑这行代码(Java):

      System.out.println("H"+"A"); //HA
      System.out.println('H'+'a'); //169
      

      1) 第一行是HA 的串联,这将导致HA(字符串文字)

      2) 其次,我们根据 ASCII 表添加两个字符的值 H=72 和 a=97,这意味着我们要添加 72+97,就像 ('H'+'a')

      3) 让我们考虑另一种情况:

      System.out.println("A"+'N');//AN
      

      在这种情况下,我们正在处理字符串A 和字符N 的串联,这将导致AN

      【讨论】:

        【解决方案4】:

        单引号表示字符,双引号表示字符串..

        char c='c';

        'c'-----> c 是一个字符

        String s="stackoverflow";

        "stackoverflow"------> stackoverflow 是一个字符串(即字符集合)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-08-29
          • 2016-08-31
          • 2017-11-10
          相关资源
          最近更新 更多