• 【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;因为此处有强制类型转换,所以编译可以通过。

  • 相关阅读:
    用户管理的设计--3.jquery的ajax实现二级联动
    用户管理的设计--2.新增用户信息实现
    用户管理的设计--1.首页查询功能实现
    使用ajax实现简单的带百分比进度条
    python && java
    es6 modules 和commonjs
    es6 promise
    CSS“隐藏”元素的几种方法的对比
    jquery extend
    html5自定义属性
  • 原文地址:https://www.cnblogs.com/tassel/p/12038092.html
Copyright © 2020-2023  润新知