添加字符以获取ASCII值的目的是什么?

时间:2012-08-26 20:53:09

标签: java char ascii


测试时(使用以下代码),char 'a'的ASCII值 10 char 'b'的ASCII值 11 但是,在连接char 'a'char 'b'时,结果为 195

我的逻辑和/或理解必定存在错误...我明白字符不能作为字符串连接,但 195 然后代表?

这样结果的用途是什么?

<小时/> 这是我的代码:

public class Concatenated
{
    public static void main(String[] args)
    {
        char char1 = 'a';
        char char2 = 'b';

        String str1 = "abc";

        String result = "";
        int intResult = 0;
        Concatenated obj = new Concatenated();

        // calling methods here
        intResult = obj.getASCII(char1);
        System.out.println("The ASCII value of char \"" + char1 + "\" is: " + intResult + ".");

        intResult = obj.getASCII(char2);
        System.out.println("The ASCII value of char \"" + char2 + "\" is: " + intResult + ".");

        result = obj.concatChars(char1, char2);
        System.out.println(char1 + " + " + char2 + " = " + result + ".");

        result = obj.concatCharString(char1, str1);
        System.out.println("The char \"" + char1 + "\" + the String \"" + str1 + "\" = " + result + ".");
    } // end of main method

    public int getASCII(char testChar)
    {
        int ans = Character.getNumericValue(testChar);

        return ans;
    } // end of method getASCII

    public String concatChars(char firstChar, char secondChar)
    {
        String ans = "";
        ans += firstChar + secondChar; // "+=" is executed last

        return ans; // returns ASCII value
    } // end of method concatChars

    public String concatCharString(char firstChar, String str)
    {
        String ans = "";
        ans += firstChar + str;

        return ans;
    } // end of method concatCharString
} // end of class Concatenated


<小时/> ...打印到屏幕的结果如下:

The ASCII value of char "a" is: 10.
The ASCII value of char "b" is: 11.
a + b = 195.
The char "a" + the String "abc" = aabc.


<小时/> - 编辑: -

正如@Marko Topolnik在下面指出的那样,方法getASCII应更改为此值以返回正确的ASCII值(并且 UNICODE值):

public int getASCII(char testChar)
{
    // int ans = Character.getNumericValue(testChar); ...returns a UNICODE value!
    int ans = testChar;

    return ans;
} // end of method getASCII

为了后人的缘故,我没有改变上面的代码来反映这一点。

2 个答案:

答案 0 :(得分:5)

您正在调用错误的方法:getNumericValue将char解释为数字。例如,十六进制数字A的值为10.

你应该做的只是直接使用你的char的值。例如,将它投射到int

答案 1 :(得分:3)

Character.getNumericValue()返回指定的Unicode字符表示的int值。 根据{{​​1}} Javadocs:“大写和小写的A tp Z字母都有10到35之间的数值。这与Unicode规范无关,它不会为这些char值赋值。” / p>

但是,当您在getNumericValue()方法中添加它们时,添加的2个值是ASCII值(97 + 98)。