黑马程序员技术交流社区

标题: byte b=4b;编译为什么会报错? [打印本页]

作者: emos-c    时间: 2013-6-21 14:47
标题: byte b=4b;编译为什么会报错?
本帖最后由 emos-c 于 2013-6-22 20:34 编辑

java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。整数默认int,小数默认double。
由于小数默认double类型,所以直接输入float f=2.0;会报错,提示可能会损失精度,可以float f=2.0f;,标识2.0为单精度。
我的问题是4属于整数,整数默认int型,byte b=4;和float f=2;却都不会报错,但是 byte b=4b;会报错,为什么呢?

  1. <P>
  2. int    a  =3; //编译通过
  3. byte   b  =4; //编译通过
  4. byte   b1 =4b;  //编译报错,提示看不懂,在b的位置上需要“ ;”
  5. short  s  =4 //编译通过
  6. short  s1 =4s;  //编译报错,提示同 byte b1=4b;
  7. float  f  =2.0f;//编译通过
  8. float  f1 =2.0; //编译报错,提示有可能损失精度
  9. float  f2 =2; //编译通过,打印结果2.0
  10. double d  =2.3; //编译通过
  11. double d1 =2.3d;//编译通过
  12. long   l  =4; //编译通过
  13. long   l1 =4l; //编译通过</P>
  14. <P> </P>
  15. <P>
  16. </P>
复制代码

作者: Just_Only    时间: 2013-6-21 15:09
首先你的这个byte   b1 =4b;写法就是错误的,只是在定义浮点型的时候后面才有F或是D,而整数定义的时候后面是不需要加标识的,所以你这个定义会报错,因为java虚拟机不识别。
作者: ㄗs:/|丶hearts    时间: 2013-6-21 15:12
byte   b1 =4b; short  s1 =4s;  直接写byte   b1 =4; short  s1 =4; 不要加b ,s 做后缀
作者: zhxueqiu    时间: 2013-6-21 16:31
不是这样写的了byte b=4b;
应该这样写 byte b=4;不需要再4后面加b.
只有float f = 12.3f;和long l =2222222L;后面加相应的字母
作者: 8047107    时间: 2013-6-21 20:35
嗯 不需要加的




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