A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxw_0818 中级黑马   /  2016-5-5 00:50  /  683 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java语言基础(面试题之变量相加和常量相加的区别)(掌
* A:案例演示
        * 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
        * byte b1 = 3;
        * byte b2 = 4;
        * byte b3 = b1 + b2;
                * 从两方面去回答这个题
                * b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
                * byte类型的变量在进行运算的时候,会自动类型提升为int类型
        * byte b4 = 3 + 4;
                * 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
案例:
classTest1_DataTypeConversion{
        publicstaticvoid main(String[] args){
                //面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
                byte b1 =3;
                byte b2 =4;
                //byte b3 = b1 + b2;
                /*
                从两方面
                1,byte与byte(或short,char)进行运算的时候会提升为int(因为整数默认的类型为int),两个int类型相加的结果也是int类型
                2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
                */
                //System.out.println(b3);
                //byte b4 = 3 + 4;                        //java编译器有常量优化机制,在编译的时候就把3+4的结果计算出来了,
                byte b4 =7;                           //以判断7在-128至127之间
                System.out.println(b4);
        }
}


3 个回复

倒序浏览
解释的很详细,给个赞
回复 使用道具 举报
success560 来自手机 中级黑马 2016-5-5 08:33:42
藤椅
解释的很好,很全面
回复 使用道具 举报
lennycxy 来自手机 中级黑马 2016-5-5 08:37:03
板凳
解释的很好,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马