黑马程序员技术交流社区

标题: java基础疑问 求解 [打印本页]

作者: yangvsguang    时间: 2016-7-5 11:18
标题: java基础疑问 求解
"byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
从两方面去回答这个题
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值"
那么int x=sc.nextInt();
      int y=sc.nextInt();
      int sum=x+y;        这个jvm就知道x,y里面的具体值了?
作者: yang11059307771    时间: 2016-7-5 23:11
。。。。。。。。。
作者: zhangwenjin    时间: 2016-7-6 00:11
他不知道什么值 但是他知道是什么类型的
作者: Vision-V    时间: 2016-7-6 00:17
本帖最后由 Vision-V 于 2016-7-6 00:26 编辑

①byte b1 = 3;
②byte b2 = 4;
③byte b3 = b1 + b2;
这里③不对哦~
java是一种强类型语言.基本数据类型中,每一个类型占得字节大写都是固定的,内存里就开辟固定的空间来存放这个数据,它并不知道你即将键盘录入的值是多少,但是它已经准备好了容器.
上面的③,byte类型的数据在运算时会自动转化为int类型的,因此③式左边是byte类型,只有1个字节,而右边有4个字节,塞不下~所以③式子如果需要强制赋值给b3 的话,右边需要强制转换数据类型.byte b3 = (byte)(b1 + b2);
下面的式子
      int x=sc.nextInt();
      int y=sc.nextInt();
      int sum=x+y;
这里是两个变量x,y接收键盘录入的数值,因为你使用的键盘录入方法是nextInt();这个只能接收输入的整数,那么用int x容器来接收刚好,下面的y同理, int sum=x+y;这里只是一个算式,系统不管你两次录入的值相加多少,你使用了int类型的数据来接收这个和,那系统帮你开辟这个空间,给你一个容器,你要是输入很大了,它就提醒你,警告你,如果在int类型的范围内,它就输出结果给你看~


作者: yaozhilin    时间: 2016-7-6 07:52
你输入的数字,jvm默认的就是int类型.即你不指定类型的话.jvm就把他当成int类型.相加之后赋值给int型的变量,并不会出什么问题
作者: feng19900123    时间: 2016-7-6 08:43
两个byte类型数据运算时会被java自动提升为int类型,计算的结果是int型,没有强转的情况下是无法赋值给byte类型的,而两个int类型数据运算时就是int型,所以结果就是int型,赋值给int型变量是没有问题的。
作者: 梦里千年    时间: 2016-7-6 09:53
干的漂亮




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2