Java String / Char charAt()比较

时间:2016-10-17 12:01:41

标签: java char comparison charat

我已经看到了使用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?

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:13)

  

//当它等于&#39; - &#39;是什么意思?

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

在这种情况下,你会得到第一个字符并查看它是否为减号。此减号为(char) 45,请参见下文

  

// char变量如何与<运算符进行比较?

在Java中,所有字符实际上都是16位无符号数。每个字符都有一个基于unicode的数字。例如'9'是字符(char) 57此比较适用于任何小于9代码的字符,例如空间。

enter image description here

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

答案 1 :(得分: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值。我不知道你为什么要检查ascii当量的c是否小于ascii等价于'9'。

如果你想得到任何字符的ascii值,那么你可以:

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

答案 2 :(得分:0)

str.charAt(0) == '-';返回一个布尔值,在本例中为false

if (c < '9')将'3'的ascii值与'9'的ascii值进行比较,并再次返回布尔值。

答案 3 :(得分:0)

    org.opensaml.saml.saml2.core.Response samlResponse = responseBuilder.buildObject();

    // Compute and add SignatureValue element to Signature
    XMLObjectProviderRegistrySupport.getMarshallerFactory()
                .getMarshaller(samlResponse).marshall(samlResponse);
    Signer.signObject(signature);

如果第0点的字符是' - ',则该语句返回true,否则返回false。

str.charAt(0) == '-'

这将c的ascii值与ascii值'9'进行比较,在这种情况下分别为99和57.

答案 4 :(得分:0)

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

根据原始的unicode规范定义Java字符,该规范为每个字符赋予16位值。这些是Java在您比较charsc>'3'之类的内容时所比较的值。