zoukankan      html  css  js  c++  java
  • 6、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?-Java面试题答案

    先说一下Java的基本数据类型转换规则,大的数据类型转换为小的数据类型需要强制转换,反之可以自动转换。

    赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。

    第一题:short s1 = 1; s1 = s1 + 1;

    错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

    第二题:short s1 = 1; s1 += 1;

    正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

    第三题:short s1=1,s2=1;short s3=s1+s2;

    错误!这里是编译器从数据安全方面考虑,如果s1和s2都是较大的short类型数,可能会导致溢出,所以会要求强制转换到int。正确写法:short s3 = (int)s1 + s2;

  • 相关阅读:
    CSS样式2
    页面布局
    CSS样式1
    HTML
    Document
    Document
    Document
    Document
    Document
    Document
  • 原文地址:https://www.cnblogs.com/helenwq/p/11647569.html
Copyright © 2011-2022 走看看