当我们在字节短数据类型中进行加法、减法、除法(等)时,结果来自int值......为什么会这样......?
e、 g:-在上面的代码中没有编译,因为c中的结果来自int为什么会发生。。。???当我们尝试使用system out打印c时,出现了错误,因为结果是int
public class A {
public static void main(String[] args) {
byte a = 12;
byte b = 10;
byte c = a + b;
System.out.println(c);
}
}
说明书上说:
https://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.18.2
二元运算符应用于两个数字类型的操作数时执行加法,生成操作数之和。
二进制运算符执行减法运算,产生两个数字操作数的差。
对操作数执行二进制数字提升(§5.6.2)。
请注意,二进制数字提升执行值集转换(§5.1.13)并可能执行拆箱转换(§5.1.8)。
数值操作数上的加法表达式的类型是其操作数的提升类型。
https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.6.2
当运算符对一对操作数应用二进制数字提升时,每个操作数都必须表示可转换为数字类型的值,按顺序应用以下规则:
如果任何操作数属于引用类型,则会对其进行解装箱转换(§5.1.8)。
加宽基元转换(§5.1.2)用于转换以下规则指定的一个或两个操作数:
如果您将两者结合起来,您会看到加法中的任何操作数都将提升为int或long,任何小于int的原语都将提升为int。操作的结果是两个操作数的类型——它int。
这背后的原因很可能是int是最常见的数据类型,它可以减少溢出的可能性,同时不需要像long一样多的空间。空格参数可能不再像以前那样普遍有效,但规范的这一部分是1995年定义的,是语言的固有部分(如果不破坏兼容性,就无法更改)。
这在这里得到了很好的回答,从相同的场景开始:)http://www.coderanch.com/t/499127/java/java/Adding-bytes
引用http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.6.2
当运算符对一对操作数应用二进制数字提升时,每个操作数必须表示可转换为数字类型的值,以下规则依次适用,必要时使用加宽转换(§5.1.2)转换操作数:如果任何操作数为引用类型,则执行解装箱转换(§5.1.8)。然后:如果任一操作数的类型为double,则另一个操作数将转换为double。否则,如果任一操作数的类型为float,则另一个操作数将转换为float。否则,如果任一操作数的类型为long,则另一个操作数将转换为long。否则,两个操作数都将转换为int类型。
根据java doc的说法,当我们对两个字节执行操作时,输出很可能是一个无法由字节处理的数字,所以java的创建者决定将其自动转换为整数。就像这样。
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在JavaScript中定义了以下几种数据类型: Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080
数据类型 整数 浮点数 对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5 整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的,而浮点数运算则可能会有四舍五入的误差。 字符串 使用""或者是'' 这两种表示方法并没有什么区别 为了简化,Python还允许用r''表示''内部的字符串默
数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080
当程序需要将值保存起来以备将来使用时,便将其赋值给一个变量,值的类型称作数据类型。 变量 JavaScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。定义变量时要使用关键字 var 来声明的,如下所示: var message; 这行代码定义了一个名为 message 的变量,该变量可以用来保存任何值(像这样未经过初始
最近要开始新的项目,工作又开始忙起来了,不过还是每天要抽时间来写博客,但不可能做到日更,因为一篇博客,写的时间还是挺长的。 注:看到以前矫情的话语,一下子就想把它给删掉。可以刚刚按了删除键才发现,删了之后,不知道写什么了。就瞬间撤销了。这一章节中改动了挺多东西的,也新增了很多例子。 目录