Integer.valueOf针对字符返回ASCII

时间:2019-12-16 07:50:44

标签: java integer character

Integer.valueOf接受Stringint作为参数,但是当我传递Character时,它不需要强制转换,编译器也不执行任何操作。

字符不扩展String类,它仅实现SerializableComparable

Character charc = '1';
System.out.println(Integer.valueOf(charc));
System.out.println(Integer.valueOf(charc.toString()));

输出:

49
1

这不是设计上的缺陷,还是我在错误的方向上思考? 拒绝投票时,请在评论中写下原因。

enter image description here

2 个答案:

答案 0 :(得分:6)

JLS 5.2, Assignment conversion特别涵盖了这一点。 (将参数传递给方法实质上就像为变量分配值一样。)

  

分配上下文允许使用以下之一:

     

...

     
      
  • 取消装箱转换(第5.1.8节),然后可以选择扩展原始转换。
  •   

这里发生的事情是Character取消装箱到char;然后将char扩展为int

答案 1 :(得分:2)

char ist自动加宽为int,这对于Integer.valueOf()来说是完美有效的参数

如果所需类型包含所有当前类型,例如char到int或int到long,则Java自动转换某些类型。有关详细信息,请参见Java Language Specification