`
zengguo1988
  • 浏览: 280163 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java程序中的问题 short s1=1; s1+=1;为什么编译不出错

阅读更多

short s1=1;

1例->   s1=s1+1; //出错                  2例->    s1+=1;//正常
1例 使用简单赋值运算

2例 使用复合赋值运算

 

1例中的 ' 1 ‘为int类型,不会自动转换为short型 ,这样可以:s=(short)(s+1);但可能会损失精度

 

而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型!   

这就是1例编译不通过,2例编译却能通过的原因。

 

精度取决于他们相加的结果是否超过short所能表达的最大值,超过就丢精度  反之不丢~~

分享到:
评论
2 楼 fuchao01 2009-07-28  
+=是int型
1 楼 robustwang 2009-07-28  
基础知识。。

相关推荐

    javaWEB面试题大全(机会只有一次,千万别错了)

    s1=s1+1;有什么错? short s1=1; s1+=1;有什么错?** - `short s1=1; s1=s1+1;`会有错误,因为`s1+1`的结果是int类型,需要进行类型转换。 - `short s1=1; s1+=1;`则不会出错,因为`+=`运算符会自动处理类型提升和...

    最新版Java面试宝典2015

    `中,`s1+1`会产生一个`int`类型的值,因为默认情况下,`1`是`int`类型。这会导致编译错误,因为不能将`int`类型赋值给`short`类型。 - 而`short s1=1; s1+=1;`则不会出错,因为`+=`操作符会在右侧表达式的结果自动...

    java面试宝典

    为什么?** `char` 类型可以存储中文汉字。这是因为Java中的 `char` 类型是16位的Unicode编码,足以表示所有的中文字符。 **8. 用最有效率的方法算出 2 乘以 8 等于几?** 最高效的方法是使用位移运算符:`2 。这是...

    java面试宝典2014版

    java面试宝典2014版中涵盖了Java基础、面向对象特征、异常处理机制、多线程、集合框架等多个方面的问题,以下是这些知识点的详细解析: Java基础部分: 1. Java源文件中可以包含多个类,但只能有一个公共类(public...

    JAVA面试笔试题大汇总\125条常见的java面试笔试题大汇总

    在Java中,`short s1 = 1; s1 = s1 + 1;` 会出错,因为 `s1 + 1` 的结果是一个 `int` 类型,需要手动转换回 `short`。而 `s1 += 1;` 则可以直接工作,因为Java会自动处理这种类型的转换。 29、`Math.round()` 方法...

    Java面试宝典.pdf

    书中还探讨了类型转换的问题,例如`short s1 = 1; s1 += 1;`这行代码在编译时会自动提升类型,因此不会出错,而`s1 = s1 + 1;`需要强制类型转换。另外,`char`型变量可以存储中文字符,因为Java的`char`类型是...

    Java就业面试题264道

    第一句会出错,因为s1 + 1的结果是int型,需要强制转换回short。第二句不会出错,因为s1 += 1是合法的复合赋值操作,编译器会自动处理类型转换。 8. **char型变量中能不能存贮一个中文汉字?为什么?** 可以,...

    java基础面试题 java程序员的参考

    会出错,因为s1+1的结果是int型,需要显式转换回short。而s1 += 1;则是合法的,因为编译器会自动处理类型转换。 10、Java内存模型:Java分为堆内存、栈内存、方法区(JVM规范中的概念,现在已由元空间取代)、程序...

    2022年IBM、SUN等公司的Java面试题集.docx

    `是错误的,因为s1+1的结果是int类型,无法直接赋回给short变量。 - `short s1 = 1; s1 += 1;`是正确的,编译器会自动处理类型转换。 12. **sleep()与wait()**: - `sleep()`:使当前线程暂停指定时间,不会释放...

    Java面试宝典2012版

    `会出错,因为`s1 + 1`的结果是int类型,需要显式转换为short类型。 - `short s1 = 1; s1 += 1;`可以直接编译通过,因为`+=`操作符会自动处理类型转换。 #### 10. Java中的goto Java原生并不支持`goto`语句,但`...

    java ssh面试宝典

    `这行代码会导致编译错误,因为`1+1`会产生一个`int`类型的结果,而`short`类型的变量不能直接赋值一个`int`类型的结果。而`short s1=1; s1+=1;`则不会出错,因为`+=`操作符会自动处理类型转换。 **7. char型变量...

    java编程常见面试题目

    Java 编程语言中,面试时常会涉及到许多关键概念和技术,以下是对这些面试题目的详细解释: 1. **final, finally, finalize的区别** - `final`:用于声明类、方法或变量,表示不可变性。对于类,禁止继承;对于...

    java面试宝典2017版

    - **问题描述**:`short s1 = 1; s1 = s1 + 1;`有什么错? `short s1 = 1; s1 += 1;`有什么错? - **解答**: - `s1 = s1 + 1;`:因为`s1 + 1`的计算结果默认是`int`类型,需要显式强制类型转换。 - `s1 += 1;`:...

    Java面试题集.doc

    从给定的文件信息中,我们可以总结出一系列重要的Java知识点,涵盖了从基本概念到面试常见问题的解答。以下是对这些知识点的详细解析: ### 1. final, finally, finalize的区别 - **final**:用于声明属性、方法和...

Global site tag (gtag.js) - Google Analytics