s+=1 和 s=s+1看了这篇,你会明白好多自己不知道的(对小白)_zqhwboy的博客-程序员秘密

技术标签: java基础  

s+=1和s=s+1区别

  • 下面的代码会报错,知道为什么么?
	short s = 1;
    s = s + 1;

因为:1是int型,s+1会自动将s转化为int型进行运算,结果就是int型,

果将int直接赋值给short会报错,高到第的转化需要强转.

  • 正确的写成下面这样
		//注意加两个括号
		short s = 1;
        s = (short) (s + 1);
  • 如果改成这样会对么?
    short s = 1;
    s = s + (short)1;
  • 告诉你这样也是错的,为什么呢?(记住就行)
  1. JAVA中short和short相加自动转化为int
  2. 精度小于int的数值运算的时候都回被自动转换为int后进行计算
  • 下面的也可以,那么问题来了,这个为啥这样可以?
//这样也可以实现s加1;更为简单 	
short s = 1;
        s+=1;
  1. s += 1是等价于 s = (s的数据类型)(s + 1)
  2. 对于+= -=,*=等系统会自动执行类型转换操作
  3. 更深层次涉及到jvm如何实现(实话说我还不够格,以后回来补上的)
  • 下面的代码不报错,这不是int转short么,为什么?
short s = 1 + 2;
  1. 因为你要知道常量池优化:在给变量进行赋值的时候,如果左边全是常量,没有任何变量的时候,那么java的编译器会直接计算右边的结果,然后赋值给左边变量,相当于short s=3;如果常量运算的值超过范围就会报编译错误.

可以看看这个链接,写的非常明白

  • 想要再深入细节的可以自己搜,后期会把虚拟机实现方式补下.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mogbox/article/details/115628131

智能推荐

Leetcode解题思路_Leo木的博客-程序员秘密

1、理解题意读懂题目要求:要实现什么功能案例分析注意限制条件(时间复杂度、空间复杂度)2、单步运行这一步以数据结构和常用算法的掌握为前提,需要通过大量刷题来提升解题的敏感度。生成解题思路分析基本示例考虑常用的算法思路筛选出符合题意的算法思路3、抽象化抽象化算法行为分析给出的算法为什么符合题意4、编码这一步建立在掌握对应语言和API的基础上,是从‘抽象到具体’的过程。将算法的行为具体化成实际代码得到初始代码5、测试考虑以下情况:边界条件数组越

【每周一本书】之《白话大数据与机器学习》_数据猿的博客-程序员秘密

我们已经进入了全新的数据时代,大数据、云计算、物联网、机器学习、人工智能等等一系列技术纷至沓来,数据的管理和应用已经渗透到每一个行业和业务领域,成为当今以及未来商业运作的基础资产。可以说,只有掌握数据并善于运用数据的人,才会在竞争日益激烈的环境中寻得先机编辑 | abby官网 | www.datayuan.cn微信公众号ID | datayuancn我们已经进入了全

CMake相关代码片段_weixin_30678821的博客-程序员秘密

目录 用于执行CMake的.bat脚本 CMakeLists.txt和.cmake中的代码片段 判断平台:32位还是64位? 判断Visual Studio版本 判断操作系统 判断是Debug还是Release等版本 根据Debug/Release添...

MySql远程连接无法打开解决办法_zhengxiuchen86的博客-程序员秘密

1。改表法。 请使用mysql管理工具,如:SQLyog Enterprise 可能是你

PCL编译时找不到FLANNConfig.cmake文件_安安安楠的博客-程序员秘密

在执行pcl教程:使用 VFH 描述符的集群识别和 6DOF 姿态估计中问题的解决。pcl1.8自带flann第三方软件包,用自带教程直接编译会出现无法找到FLANNConfig.cmake的问题。直接把cmakelist.txt换成这一个全部解决,不用在找findflann文件cmake_minimum_required(VERSION 2.8 FATAL_ERROR)project(vfh_cluster_classifier)find_package(PCL 1.2 REQUIR

程序员的自我修养 - 操作系统_皮小猪的时光的博客-程序员秘密

操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。进程的状态 如上图所示,进程包括三种状态:就绪态、运行态和阻塞态。详细说明如下:就绪 — 执行:对就绪状态的进程,当进程调度程序按一种选定的策略从中选中一个

随便推点

HTTP请求常见Code_请求超时code_李永吉的博客-程序员秘密

HTTP Status Code常见的状态码:HTTP: Status 200 – 服务器成功返回网页HTTP: Status 404 – 请求的网页不存在HTTP: Status 503 – 服务不可用说明:HTTP: Status 1xx (临时响应)->表示临时响应并需要请求者继续执行操作的状态代码。详细代码及说明:HTTP: Status 100 (继续)-

AI 架构师 Yoshua Bengio:深度学习的研究,对于工业应用来说太过简单_喜欢打酱油的老鸟的博客-程序员秘密

2020 年 1 月 6 日 17:55拍摄:Maryse BoyceYoshua Bengio(https://mila.quebec/en/person/bengio-yoshua/)被称为深度学习领域的“三个火枪手”之一,深度学习是人工智能(AI:Artificial Intelligence)领域的一个分支,目前在该领域占据主导地位。Bengio 是蒙特利尔大学教授,因...

读书笔记-《第一本Docker书》_Jason575757的博客-程序员秘密

第一章:简介容器与HV:管理程序虚拟化(hypervisor virtualization)通过中间层将独立的机器虚拟运行在物理硬件上,而容器则直接运行在操作系统内核之上的用户空间。容器技术可以让多个独立的用户空间运行在同一宿主机上。Docker 与以往容器:以往容器不易安装,管理和自动化困难。Docker 得益于Linux内核特性如控件组(control group)、命名空间(namespace)技术,容器和宿主机直接隔离更彻底,容器有独立的网络和存储栈,以及资源管理能力。Docker 是一

JVM面试汇总2020512_爱马字的小马的博客-程序员秘密

1. 什么是jvm?是计算机设备的一个规范,jvm屏蔽了与具体操作系统的具体的信息。使Java程序只是需要 生成java虚拟机上运行的目标代码(字节码),就可以在多种平台上可以不加修改就可以运行。实际上jvm在执行字节码最终还是解释成具体平台的机器码指令来执行的。2. JRE/JDK/JVM是什么关系?JRE:JavaRuntimeEnvironment.Java运行环境。所有程序需要在jre下才能运行。普通用户只需要运行已开发好的java程序,安装jre即可。jdk:JavaDev

计算机网络 - NB-IOT/LoRa/Zigbee 无线组网方案对比_nb无线网络_InfiniteYuan的博客-程序员秘密

NB-IOT/LoRa/Zigbee无线组网方案对比NB-IOT/LoRa/Zigbee无线组网方案对比NB-IOT/LoRa/Zigbee无线组网方案对比物联网设备节点组网存在2种组网方式, 无线组网和有线组网。 无线组网我们常见到的有Zigbee,LoRa, NB-IOT等,其中Lora/NB-IOT属于LPWAN技术,LPWAN技术有覆盖广、连接多、速率低、成本低、功耗少等特点。NB-...

layer弹出层关闭后刷新父页面_layer.close后刷新当前页面_荒--的博客-程序员秘密

一、直接刷新父页面,查询条件和页码失效在子页面代码如下:window.parent.location.reload(); //刷新父页面var index = parent.layer.getFrameIndex(window.name); //获取窗口索引parent.layer.close(index); // 关闭layer二、关闭子页面后父页面刷新,保持当前的查询情况...

推荐文章

热门文章

相关标签