黑马程序员技术交流社区

标题: delete info [打印本页]

作者: relive    时间: 2014-7-22 23:23
标题: delete info
本帖最后由 relive 于 2017-9-1 17:03 编辑

delete info
作者: relive    时间: 2014-7-22 23:33
本帖最后由 relive 于 2017-9-1 17:03 编辑

delete info
作者: liuniansis    时间: 2014-7-24 15:47
这是java规定的一种语法,并不需要深究它,其实加L,应该就是给它添加一个标志,告诉java编译器,它这个数值不需要对他进行截取.而int转换为short虽然不需要这种语法,但是也需要强制类型转换.
作者: 李彦来    时间: 2014-7-24 16:29
你说的是这个意思吗?
  1. class ByteShortDemo
  2. {
  3.         public static void main(String[] args){
  4.                
  5.                 short sh=256;
  6.                 byte by=1;
  7.                 by=by/sh;
  8.                 System.out.println(by);
  9.         }
  10. }
复制代码

用一个byte 数除以short?
这样写编译是会出错,需要强转啊...
作者: chen010yu    时间: 2014-7-25 00:55
JVM在编译时,有默认基本数据类型,如未申明,就有可能会出错
作者: relive    时间: 2014-8-9 15:16
我来自答吧。
作者: relive    时间: 2014-8-9 15:19
基本类型在赋值的时候,因为在编译器阶段就会进行数据大小是否溢出的检查,所以虽然没人是int类型四个字节,但是byte和short赋值的时候,超过其范围,则会编译器报错;同理,long虽然是8个字节,但是超出四个字节(int范围)需要特别声明,也就是在末尾加L
作者: relive    时间: 2014-8-9 15:25
所以各位如果不相信的话,请字敲代码测试一下用例:
1. 定义一个byte变量或者short变量,但是赋值在一个字节或两个字节范围内,编译器不报错;超出则报错;
2. 定义一个long变量,如果赋值在四个字节以内,则编译器通过;超出四个字节,则编译器报错,提示需要加L/l;
3. 随便定义一个float变量,只要末尾不加F/f则编译器报错,因为向下转;
4. 只是觉得奇怪,无论谁来开发一门语言,各个细节的设计思路应该要统一,到那时从int和float的定义来看,这一部分的思路是不统一的,这一点像白脸上的黑痣,让人不舒服。




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