java s1_转!!Java 基础面试题的剖析: short s1=1;s1 = s1 +1 报错? s1+=1 呢

package common;

public class ShortTypeTest {

/*

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

short s1 = 1; s1 = (short) (s1 + 1);//简单类型

short s2=1; s2 +=1;//复合类型,复合赋值操作符+=,

System.out.println(s1+";"+s2);

//运行时Console输出什么,你知道吗?

}

}

题目:

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

解答:

Java规范有这样的规则

[

1.高位转低位需要强制转换

2.低位转高位自动转.

]

short s1 = 1; s1 = s1 + 1;有什么错?

答: i 是int 型   s1 short型 通过 + 运算后s1 自动转为int 型   所以错!

short s1 = 1; s1 += 1;有什么错?

答: 如果你认为表达式(x += i)只是表达式(x = x + i)的简写方式,这并不准确。

这两个表达式都被称为赋值表达式。(x = x + i)表达式使用的是简单赋值操作符(=),而(x += i)表达式使用的是复合赋值操作符。Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),其中T是E1的类型,除非E1只被计算一次。   换句话说,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化原生类型转换。

因此,复合赋值表达式可能是危险的。为了避免这种令人不快的突袭,请不要将复合赋值操作符作用于byte、short或char类型的变量。 因为S1是short型的,占2个字节,而1是int型的,占4个字节。在两个类型的值相加的时候,会发生自动类型的提升,要不然数据也装不下呀,是这个道理吧*_*。也就是说s1+1后,其结果是int型的,而不是short型的,所以可以想想看,把4个字节的东西放在两个字节的空间里,肯定编译不通过。

后面的那个不会发生类型的提升,JAVA规范上说 【e1+=e2    实际上是    e1=(T1)(e1+e2) 】,其中T1是e1的数据类型。   s1+=1等效于   s1=(short)(s1+1),所以是正确的

原博文地址:http://blog.csdn.net/hurryjiang/article/details/9256959

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python内循环只执行一次_如何1分钟内从3600只股种选出黑马股,仅分享这一次(太透彻了)...

“1234”操盘定理中,1是指如何持牛股,2是指观念要正确,3是指看破十个现象,4是指抓热点。具体讲解下选股步骤盘后我们怎么去快速选出超短线需要密切关注的票呢?其实选股方法少说也有几千种,我想没有人统计过&#xff0…

java 运行时类型_Java基础之RTTI 运行时类型识别

运行时类型识别(RTTI, Run-Time Type Identification)是Java中非常有用的机制,在Java运行时,RTTI维护类的相关信息。多态(polymorphism)是基于RTTI实现的。RTTI的功能主要是由Class类实现的。Class类Class类是"类的类"(class of classes)。如果…

指定的服务已经标记为删除_你的电话号码被标记过吗?你知道这件事情还能赚钱吗?...

今天闲来无事和大家唠唠赚钱的小副业。“电话标记”,我被这事困惑了很多年,最近解决了,同时还发现,这个信息差能挣钱,文末还给到方法,执行力强的伙伴原样照做,0成本,马上开搞&#x…

mplab x ide 中文使用手册_SCI必备利器:翻译又快又准,强推这款超牛X的神器!...

随手转发给好友和朋友圈 编辑:科研小通再分享一款翻译神器,不用调用Google服务器,速度超快。实时翻译,服务器速度杠杠的。今天给大家安利一款超牛X的翻译神器:Mate Translate。官网首页https://gikken.co/mate-transla…

python流行趋势_Python流行度再创新高,学Python就从风变编程开始

10月初,全球编程语言社区TIOBE公布了2020年10月编程语言排行榜,排名情况相较前几个月变化不大,前十名分别为C、Java、Python、C 、C#、Visual Basic、JavaScript 、PHP、R和SQL。其中,Python继续稳居第三,且其受欢迎度…

8086汇编4位bcd码_238期中4头3尾,排列五第19239期爱我彩规

爱我彩规专业研究(七星彩、排列五) 前四位的铁码与定位规,有幸开通爱我彩规公众号,努力为大家提供稳定的号码参考。作者微信号awc1125。 逢星期二和星期天不在彩码课堂公众号转发,因星期二和星期天每日八篇巳排满,只发爱我彩规公…

python通过链接下载文件-如何使用Python通过HTTP下载文件?

import urllib urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3") (用于Python 3)import urllib.request和urllib.request.urlretrieve) 还有一个有“进度栏”的import urllib2 url "http://download.thinkbroadband.com/10M…

centos6.5 编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程

此文实例给亲们分享了CENTOS6.5 编译mysql 5.7.14安装配置方法,供大家参考,具体内容如下mysql5.7.14 编译安装在自定义文件路径下下载安装包配置安装环境编译安装cmake\-DCMAKE_INSTALL_PREFIX/data/db5714 \-DMYSQL_DATADIR/data/db5714/var \-DMYSQL_U…

时间插件只能选择整点和半点_我花一小时自制了三款PPT插件,不仅免费分享,还想手把手教你制作...

更准确的说,三顿花一小时给PPT里这个天天和你见面的功能区做了一次彻底的整容:我精简了好多根本用不到的功能,还添加了一大波可以让你效率翻倍的一键操作,比如一键拆分文字,一键美化图表等等。这样的改头换面操作起来一…

c主线程如何等待子线程结束 linux_使用互斥量进行同步 - Linux C进程与多线程入门_Linux编程_Linux公社-Linux系统门户网站...

互斥简单地理解就是,一个线程进入工作区后,如果有其他线程想要进入工作区,它就会进入等待状态,要等待工作区内的线程结束后才可以进入。基本函数(1) pthread_mutex_init函数原型:int pthread_mutex_init ( pthread_mut…

电脑声音太小如何增强_感觉手机音量太小了?教你这样设置,声音立马大上许多...

不管是打电话,还是看电视,如果觉得手机的声音太小了,总会感到听起来很吃力,那么我们遇到这种情况,可以怎么办呢?建议大家看看下面这个方法,或许会让你的手机音量瞬间变大。1、打开单声道音频如今…

java 8时间操作_Java8 时间日期类操作

Java8 时间日期类操作Java8的时间类有两个重要的特性线程安全不可变类,返回的都是新的对象显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全的问题。同时Java8的时间类提供了诸多内置方法,方便了对时间进行相应的操作。上…

java虚拟机_一文彻底读懂Java虚拟机!(JVM)

提到Java虚拟机(JVM),可能大部分人的第一印象是“难”,但当让我们真正走入“JVM世界”的时候,会发现其实问题并不像我们想象中的那么复杂。唯一真正令我们恐惧的,其实是恐惧本身。而作为整个JVM系列的首篇,本文将带你解…

java open course_关于开闭原则 JavaDiscountCourse 类的设计

亲爱的同学,你好,我是geely老师的助教。你这样挺不错的。和老师的设计有不同的思路,赞。我再修改一下,看看能不能还有不一样的想法。public class DiscountCourse implements ICourse{private ICourse course;//折扣private doubl…

如何把一个软件嵌入另一个软件_新增一个软件一个游戏

今后会不定时增加付费软件的试用,如果大家有希望选购的IOS软件可留言。如果各位觉得软件好用,请去App Store购买支持开发者。MaginNote 3 (¥88)简介:MarginNote 3,全新上线电子阅读器,助力更高效书籍阅读和学习.革新性整合阅读标注…

java图书管理系统技术难度_Java图书管理系统练习程序(一)

Java图书管理系统练习程序第一部分该部分主要实现命令行方式的界面与无数据库访问的练习,通过本练习、主要掌握Java的基础知识与面向对象程序设计思想、面向接口编程技术的知识与运用。一、练习程序功能分析该练习程序主要用于学习Java的基础编程知识与面向接口编程…

java语言_JAVA语言

Java(计算机编程语言)JavaEE:12天掌握Java语言开发 - Java-环境搭建及基础语法 - 创客学院直播室Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Jav…

java的基础类库称为_JAVA基本类库介绍

8.1 包的概念包是由.class文件组成的一个集合,.class文件时可以用Java解释其解释执行的文件,它也是由Java源的文件,即.Java文件经编译而生成的。Java是一种面向对象的语言,它的特点就是重用,包就是组织和管理.class文件…

linux关机_强制关机对电脑有什么危害?

强制按下关机键对电脑有什么影响?首先我们来了解下强制按下关机和正常关机的流程有什么区别:比较上面这两个流程图我们可以发现正常关机系统关机流程硬件关机流程。强制关机则缺少了系统关机流程这个部分,仅仅执行了硬件关机的这个流程。虽然…

14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...

我们都知道,现在很多笔记本电脑都具备了4K 60p视频的播放能力,效果不俗,但笔记本本身屏幕是4K的比较少,并且也没那么大,连接显示器成了必须。而说到接口中,现在最时髦的要数雷电3、雷电4了,达到…