搞了2天java,有点收获,记录一下。
1.m=0;如果在try里写return ++m;finally里写++m;那么返回的结果是1还是2呢?
结论是1,调用try中的return ++m语句时实际上是先执行++m,然后走到finally中执行++m但是finally中的语句并不会使m真的++,原因是执行++的是临时变量有点像函数入参不是变量地址,在函数内部改变后并不会改变函数外的变量。finally执行完毕后再到try中执行return返回。
如果在try中写return,在finally中也写return则只执行finally中的return。
2.关于java中调用cmd控制台执行命令,并抓取cmd控制台中输出的内容:
Runtime abc = Runtime.getRuntime();
Process _pp = null;
try {
_pp = rn.exec("cmd /k start ping 11112222223333 pause");
OutPutExportInfo _OutputInfo = new OutPutExportInfo(_pp.getInputStream());
_OutputInfo .start();
_OutputInfo.close();
List<String> _List = ((OutPutExportInfo)_OutputInfo ).GetOutPutString();
}
命令中如果有红色字体“start”则抓不到内容,原因可能是又起了一个线程。
再者如果不调用_OutputInfo.close();则会产生阻塞,同样得不到内容。
下面两个网址详细的讲了这个问题:
http://blog.csdn.net/shendeguang/article/details/17853297
http://www.360doc.cn/article/11818366_301075200.html