免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4246 | 回复: 15
打印 上一主题 下一主题

java最基本的面试题求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-04 17:23 |只看该作者 |倒序浏览
问下面程序的输出结果
public class \\此部分省略
public void main(String[] args){
      int i = 0;
      i = i++;
System.out.println(i);

}

以下程序错误的是()
1. short s = 1; s = s + 1;

2.  short s = 1; s += 1;

知道的请写出详细原因,  里面的s=s+1和s+=1有什么区别? 谢谢

论坛徽章:
0
2 [报告]
发表于 2008-12-04 19:28 |只看该作者
怎么没人会啊?我自己顶下

论坛徽章:
0
3 [报告]
发表于 2008-12-04 20:20 |只看该作者
输出结果是0 ,i++的意义是做完其他的事情之后,自加1;如果要是 i = ++i ,输出结果为1

short s = 1; s = s + 1; (s+1运算结果是int型,需要强制转换类型)
short s = 1; s += 1;(可以正确编译)

论坛徽章:
0
4 [报告]
发表于 2008-12-04 21:25 |只看该作者
对啊,答案就是这样,你还能详细点么?还没看太懂

论坛徽章:
0
5 [报告]
发表于 2008-12-04 21:27 |只看该作者
就是那个i=i++那个,具体的是怎么回事呢,不太懂

论坛徽章:
0
6 [报告]
发表于 2008-12-05 15:55 |只看该作者
i=i++
先执行i=i
等过程执行之后才执行i++的

[ 本帖最后由 hanmingls 于 2008-12-5 16:00 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-12-05 21:08 |只看该作者
先执行i=i,那么i=0,但后面 i 不是++了吗,那么输出的时候不就是1了吗?怎么还是0?

论坛徽章:
0
8 [报告]
发表于 2008-12-06 22:09 |只看该作者
如果程序改为如下
public void main(String[] args){
      int i = 0;
      i++;
System.out.println(i);
}
这时输出就是1了,我在eclipse里debug模式下用F5单步运行时发现System.out产生的PrintStream对象调用了同步方法,感觉在i=i++的时候输出的i是与自加运算之前的i相绑定了

论坛徽章:
0
9 [报告]
发表于 2008-12-07 09:16 |只看该作者
同样的代码c++下是1java下是0。
但是我觉得应该是1才对啊

论坛徽章:
0
10 [报告]
发表于 2008-12-07 20:02 |只看该作者
是一个java笔试题目,很经典的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP