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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0_TNT_0 中级黑马   /  2014-12-10 21:30  /  2801 人查看  /  31 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.        short s = 1;
        s = s + 1;               
        short s = 1;
        s+=1;
                       
        请问能否编译通过么?

31 个回复

正序浏览
学习了,大家对细节挺关注的
回复 使用道具 举报

0_TNT_0 发表于 2014-12-10 22:44
我试过了,第一句话char c = 7;System.out.println(c);   会发出一个“嘀”声,  那 变量 c  还是 char  ...
当然是char型的了,因为计算机底层的都是二进制,7正好对应ascii码表中的 BEL (bell) 响铃所以才能够用7表示,而不报错,但是你已经定义了char  c=7 所以c仍然是char型,只不过能用ascii码表中对应的数字表示而已。
回复 使用道具 举报
受教了!
回复 使用道具 举报
不能,都一样的啊!
回复 使用道具 举报
不能编译通过,因为s+1默认是int类型,这样把s+1的值赋值给short会损失精度,可以这样改s=(short)(s+1),而s+=1则默认强制转换
回复 使用道具 举报
清浅。。 发表于 2014-12-10 22:51
编译不能通过。 short s = 1;         s = s + 1;  //等号右边的s+1计算完类型提升为int型,不能直接赋值给 ...

感谢。互相学习,加个好友吧
回复 使用道具 举报
我还以为是一个班的呢!呵呵
回复 使用道具 举报
我去  你们一个班的???
回复 使用道具 举报
爱卿 中级黑马 2014-12-10 23:06:48
24#

难道你也是么。
回复 使用道具 举报
爱卿 发表于 2014-12-10 22:49
7号编码好像就是个什么BEL响铃  至于c 没报错 说明是char类型吧。 我也是才学几天。 不确定 ...

难道是 1208 的么
回复 使用道具 举报
不给吃鸭梨 发表于 2014-12-10 22:28
莫名的眼熟呢,难道
自赋值带强制转换功能

难道 是1208的 同学吗
回复 使用道具 举报
编译不能通过。 short s = 1;         s = s + 1;  //等号右边的s+1计算完类型提升为int型,不能直接赋值给等号左边的s。改为s=(short)(s+1);这样就可以编译成功了。
回复 使用道具 举报
爱卿 中级黑马 2014-12-10 22:49:07
20#
0_TNT_0 发表于 2014-12-10 22:44
我试过了,第一句话char c = 7;System.out.println(c);   会发出一个“嘀”声,  那 变量 c  还是 char  ...

7号编码好像就是个什么BEL响铃  至于c 没报错 说明是char类型吧。 我也是才学几天。 不确定
回复 使用道具 举报
爱卿 发表于 2014-12-10 22:40
第一行输出的结果是一个输出一个控制符BEL 这个在控制台是看不到的 看起来就是个空值,用的println 所以 ...

我试过了,第一句话char c = 7;System.out.println(c);   会发出一个“嘀”声,  那 变量 c  还是 char 类型的么  ?  
回复 使用道具 举报
爱卿 中级黑马 2014-12-10 22:40:27
18#
0_TNT_0 发表于 2014-12-10 22:21
char c = 7;System.out.println(c);
char b = '7';System.out.println(b);   

第一行输出的结果是一个输出一个控制符BEL 这个在控制台是看不到的 看起来就是个空值,用的println 所以你看到的就会是一行空的。你可以百度ASCⅡ 这个编码表详细的介绍了每个字符在计算机内的表示方法。比如65是大写的A。
第二行输出结果就是7 因为这个7用单引号引起来了 他就是表示字符7. 同理 如果你用ASCⅡ编码表输出7的话 你可以试试char a=55;System.out.print(a); 输出结果还是7.
回复 使用道具 举报 1 0
高慧觉 发表于 2014-12-10 21:39
编译能通过,结果出不来。

大神是 1208 的么
回复 使用道具 举报
莫名的眼熟呢,难道:lol
自赋值带强制转换功能
回复 使用道具 举报
高慧觉 发表于 2014-12-10 21:39
编译能通过,结果出不来。

大神 试过了么
回复 使用道具 举报
爱卿 发表于 2014-12-10 22:16
这个可以的 数字7在编码表里面代表一个符号 具体符号我不知道。。反正是可以编译通过的 今天我还特意试了 ...


char c = 7;System.out.println(c);
char b = '7';System.out.println(b);   

请问输出结果分别是什么?  为什么会这样呢?变量c 和 b是什么类型的?都是char类型?
求大神解释啊。。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马