【问题标题】:What's the difference between " and '? [duplicate]“和'有什么区别?[重复]
【发布时间】:2015-04-20 21:03:06
【问题描述】:

当我在以下代码中使用 " 时,为什么我的代码可以工作:

for(int i=0;i<7;i++){
        if(grid[row][i]!=0){
            if(player == "yellow"){
                grid[row][i-1] = 'y';
            }
            else if(player == "red"){
                grid[row][i-1] = 'r';
            }
        }
    }

但是当我在下面的代码中使用 ' 时不起作用:

for(int i=0;i<7;i++){
        if(grid[row][i]!=0){
            if(player == 'yellow'){
                grid[row][i-1] = 'y';
            }
            else if(player == 'red'){
                grid[row][i-1] = 'r';
            }
        }
    }

总是说“无效的字符常量”。
- 网格是一个二维字符变量
- 行是一个整数
- player 是受保护的超类(窗口),并且在超类的构造函数中占用了黄色值:

protected String player;

public window() {
    player = "yellow";
}

【问题讨论】:

  • "" 用于字符串,'' 用于字符。
  • 总是使用equals方法比较String对象
  • 这可能解释得很好:stackoverflow.com/questions/3683602/…
  • 为什么我的代码可以工作,当我在下面的代码中使用 " 时 当你使用双引号时你的代码 编译 但是 它赢了'没有按预期工作因为Strings是使用equals方法比较的,而不是==。有关这方面的更多信息,请查看How do I compare strings in Java?
  • 该死,我正在输入一个简洁的答案,问题被关闭了。

标签: java string if-statement equality


【解决方案1】:

字符只是单个字符,例如“a”或“b”。字符串是一个或多个串在一起的字符,例如“hello world”或“p”。单引号(')用于字符文字,而双引号(“)用于字符串。

【讨论】:

  • 您最初的陈述不太正确,除非这是 java 与 C# 不同的领域,char 是单个字符,但是仅仅因为它具有单个字符并不意味着它是 char。 “a”和“a”是两个不同的值。 “a”是一个长度为1的字符串,“a”是一个char值。
  • 您说的很对,感谢您注意到这一点。
  • 好的,谢谢。这有助于我更好地理解 Java。
【解决方案2】:

在 java 中,"" 用于字母字符串 (Strings),'' 用于单个字符 (Chars)

例子:

  • "The fox jumped" 会被双引号括起来,因为它有多个字符。
  • 'c' 会被单引号括起来,因为它只有一个字符。

请注意,String 可以由单个或多个字符组成,而 char 由单个字符组成。

【讨论】:

  • 看我对 kirbyquerby 的回答的评论。 string 与 char 的概念与您描述的有点不同。
  • 我为它添加了一个编辑。谢谢。
  • 谢谢!它对我很有帮助
猜你喜欢
  • 2017-02-17
  • 2011-09-27
  • 2013-04-22
  • 2012-03-29
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多