zoukankan      html  css  js  c++  java
  • 【Java面试题】short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

    昨天去面试,虽然体验不是很好, 但是看到了这个面试题,当时感觉无从下手,所以在这里记录一下。

    解决这道题之前,先复习一下Java的基本数据类型转换规则,以便后面对面试题的理解。

    java的基本数据类型转换

    • 自动类型转换:小–>大 byte-->short-->int-->long-->float-->double

    • 强制类型转换:大–>小 小类型 变量名 = (大类型) 值

      注意:自增/自减运算符、复合赋值运算符底层做了优化,内部自动强制类型转换;

      如:++, --, +=, -=, ......

    • 类型提升:是指在多种不同数据类型的表达式中,类型会自动向范围表达大的值的数据类型提升;

      long count = 1000000;
      int price = 1999;
      long totalPrice = price * count;
      

    正文——面试题

    1. short s1 = 1; s1 = s1 + 1;

    错误!

    根据java的基本数据类型转换规则,s1为short类型的变量,在表达式s1 = s1 + 1;中,s1会自动转为int类型与1进行运算,运算结果为int类型,而int类型的值 赋值给short类型的变量时需要强制类型转换。

    2. short s1 = 1; s1 += 1;

    正确!

    在复合赋值运算符底层自动进行强制类型转换,所以此处实际上是s1 = (int) s1 + 1;因为此处有强制类型转换,所以编译可以通过。

  • 相关阅读:
    使用数据(二)
    lambda表达式
    方法引用::
    开发 Web 应用(一)
    Spring基础(三)
    Spring基础(二)
    Spring 基础(一)
    项目实践之Ajax 技术使用教程
    项目实践之前后端分离详解
    考研计算机基础:构造算法与自上而下逐步完善:实例研究3(嵌套控制结构)
  • 原文地址:https://www.cnblogs.com/tassel/p/12038092.html
Copyright © 2011-2022 走看看