Java字符串/字符charAt()比较

7

我看过很多关于charAt()方法的比较。

然而,有几个比较我并不是很理解。

String str = "asdf";
str.charAt(0) == '-'; // What does it mean when it's equal to '-'?


char c = '3';
if (c < '9') // How are char variables compared with the `<` operator?

任何帮助都将不胜感激。


"当它等于 '-' 时,这是什么意思?" 没有头绪,只有编写该代码的人可能知道... - Timothy Truckle
2
“char”变量如何使用“<”运算符进行比较?primitive “char”是一种“numeric”类型,因此可以与“>”或“<”进行比较。 - Timothy Truckle
5个回答

13

// 当字符等于“-”时,这意味着什么?

每个字母和符号都是一个字符。您可以查看字符串的第一个字符并检查是否匹配。

在这种情况下,您获取第一个字符并查看它是否为减号字符。这个减号符号是(char)45,如下所示:

// 如何使用<运算符比较char变量?

在Java中,所有字符实际上都是16位无符号数字。每个字符都有一个基于其Unicode的编号。例如'9'是字符(char)57。对于任何小于代码的字符,此比较都成立9,例如空格。

enter image description here

您的字符串的第一个字符是'a',它是(char)97,因此(char)97 <(char)57为假。


这是字符编码的基础。https://en.wikipedia.org/wiki/Character_encoding 上述引用的定义使用ASCII字符编码。 - Andrew

1
String str = "asdf";
String output = " ";
if(str.charAt(0) == '-'){
  // What does it mean when it's equal to '-'?
  output= "- exists in the first index of the String";
}
else {
    output="- doesn't exists in the first index of the String"; 
}
System.out.println(output);

它检查该字符是否存在于索引0中,这是一种比较。

至于if (c < '9'),比较了c和9的ascii值。我不知道为什么要检查c的ascii等价物是否小于'9'的ascii等价物。

如果您想获得任何字符的ascii值,则可以:

char character = 'c';
int ascii = character;
System.out.println(ascii);

0

str.charAt(0) == '-'; 返回一个布尔值,在这种情况下为false

if (c < '9') 比较'3'的ASCII值和'9'的ASCII值,并再次返回布尔值。


0
str.charAt(0) == '-'

如果点0处的字符为“-”,则此语句返回true,否则返回false。

if (c < '9')

这将比较字符 c 的 ASCII 值与 '9' 的 ASCII 值,分别为 99 和 57。


0

字符是Java中的一种原始类型,这意味着它不是一个复杂对象。因此,每次您比较chars时,都直接比较它们的值。

Java字符根据原始Unicode规范定义,为每个字符赋予16位值。当您比较像c>'3'str.charAt(0) == '-'这样的内容时,Java比较的就是这些值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接