java 自动类型转换

来源:百度知道 编辑:UC知道 时间:2024/05/13 19:15:48
有一道选择题:
操作数1是byte型,操作数2是long型,结果是long型,答案是对的
为什么
操作数1是long型,操作数2是byte行,结果是long行,就是错的呢?

long+byte和byte+long不是一样的马?

lz测试错了吧 byte+long 和 long+byte 一样呀
都是long型,没有区别,都是byte转换成了long型,

byte a=0;
long b=0;
long c=0;
c=a+b;
c=b+a;
建议你在试试可能是程序别的地方出了问题

答案错了吧!
JAVA虚拟机里面有自动提升数据类型的机制!

JAVA中有隐式转换,
第一个只能是小的,第二个是大的话会自动变成第二个范围的

lont i=int j
int j=(int)long i; 这样就是强转了

这里面有关包装类的问题
是需要用包装类来进行转换的
Java中许多存储和管理对象集合的有用的类(列表、树、数组等)不能在这些基本类型上进行操作,因为从技术上讲这些基本类型不是从Java对象类派生出来的。
但是Java为基本类型提供包装类,这使得任何接受对象的操作也可以用来操作基本类型。
直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。
Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,除了首字母大写之外,包装类与基本类型名字相似。

...答案错了吧。。。byte和long作为两个操作数,应该是会把byte转换成long的。。。