您的位置 首页 java

Java笔试题之自动类型转换细节题

Java笔试题之自动类型转换细节题

一 、以下代码输出结果是【中国东北某著名软件公司 笔试题】

Java笔试题之自动类型转换细节题

A、编译错误 B、 10.9 C、9 D、 以上答案都不对


如果你认为很简单,选择了C,那么即恰巧中了陷阱。

三目运算表达式结构:

ConditionalOrExpression ? Expression : ConditionalExpression

Java会根据运算符的经度类型进行自动类型转换,由于前面一个是10.9(double类型),因此后面的9也会自动变成9.0.因此选择D项。

自动类型转换的规则:

  • 参与运算的数据类型不同,先转换成同一类型,然后进行运算。

  • 转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。

  • 所有的 浮点运算 都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也要先转换成double型,再作运算。

  • char型和short型参与运算时,必须先转换成int型。

  • 在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度

Java笔试题之自动类型转换细节题


二、以下代码输出结果是()【中国著名网络软件公司 笔试题】

Java笔试题之自动类型转换细节题

A、120 x B、120 120 C、x 120 D、以上答案都不对


int i = 10; 这里的i是一个变量,因此第一个输出x被提升为int类型,字符‘x’的int值为120,所以第一个输出的应该是120.

三目运算表达式结构:

ConditionalOrExpression ? Expression : ConditionalExpression

Java编程规范(文章最后有提供)里面提到,

Java笔试题之自动类型转换细节题

If one of the operands is of type T where T is byte, short , or char , and the other operand is a constant expression (§15.28) of type int whose value is representable in type T, then the type of the conditional expression is T.

大致意思如下:

如果一个操作对象是T类型(T包括byte、short或者char)另一个操作对象是int类型常量表达式,而且值可以表示为T类型,那么输出结果是T类型。

因为10为int常量,可以被char表示,输出结果为char类型。


相关语言规范参见:#jls-15.25

文章来源:智云一二三科技

文章标题:Java笔试题之自动类型转换细节题

文章地址:https://www.zhihuclub.com/179321.shtml

关于作者: 智云科技

热门文章

网站地图