Java char is also an int?

前端 未结 7 1797
甜味超标
甜味超标 2020-12-04 02:12

I was trying to get some code done for class:

public int getValue(char value) {
    if (value == \'y\') return this.y;
    else if (value == \'x\') return th         


        
相关标签:
7条回答
  • 2020-12-04 02:26

    A char is not an int. However, it is an integral type. That is to say, it's considered to be a whole number that can be converted to and from other integral types (long,short,byte and int), according to the Java Language Specification.

    Basically what this means is that it is assignment-compatible to int. Its value is between 0 and 65535, and if you assign it to an int or cast it to an int and print it, you'll get the UTF-16 value of the character it represents.

    0 讨论(0)
  • 2020-12-04 02:29

    The Java Language Specification states

    When a return statement with an Expression appears in a method declaration, the Expression must be assignable (§5.2) to the declared return type of the method, or a compile-time error occurs.

    where the rules governing whether one value is assignable to another is defined as

    Assignment contexts allow the use of one of the following:

    • a widening primitive conversion (§5.1.2)

    and

    19 specific conversions on primitive types are called the widening primitive conversions:

    • char to int, long, float, or `double

    and finally

    A widening primitive conversion does not lose information about the overall magnitude of a numeric value in the following cases, where the numeric value is preserved exactly: [...]

    A widening conversion of a char to an integral type T zero-extends the representation of the char value to fill the wider format.

    In short, a char value as the expression of a return statement is assignable to a return type of int through widening primitive conversion.

    0 讨论(0)
  • 2020-12-04 02:36

    Hope this little example solves your confusion:

    public int getValue(int value) { 
        if (value == 'y') 
            return this.y; 
        else if (value == 'x') 
            return this.x; 
    }
    

    If you pass char as an int like getValue('x'), it would return the value of the int.

    0 讨论(0)
  • 2020-12-04 02:38

    A char is smaller than an int, so you can return it and it will prepend zeroes to make a longer number. That's not the right thing to return - in your case I'd probably throw an exception instead; however, the editor suggested it because it's something that you're allowed to return and you need to return something.

    The following code is legal:

    char c = 'h';
    int i = c;
    
    0 讨论(0)
  • 2020-12-04 02:38

    In computing, everything is numbers! Just bits and bytes.

    int, char, byte, short and long are just numbers. A char is just a number that the compiler knows is usually used for displaying the character represented by the particular number (e.g. 32 = space, 48 = zero, etc).

    A String is a sequence of numbers and other stuff, so a bit more complicated. We don't want to go there.

    An int is a four byte number and a char is a two byte number, so you can fit any char number in an int.

    The designers of Java just decided they would let you convert from char to int without requiring any special casts or conversions.

    0 讨论(0)
  • 2020-12-04 02:43

    By definition (in java) a char is an 8bit unsigned integer. (0 to 256)

    An int an 32bit signed integer. (−2.147.483.648 to 2.147.483.647)

    char a = 65;                    //65 is the ASCII Number of 'A'
    System.out.println(a);
    >>> A
    
    b = a + 1
    System.out.println(b);
    >>> B
    

    java autoboxing converts char to int and vice versa

    0 讨论(0)
提交回复
热议问题