java知识小结

搞了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

posted @ 2015-04-14 21:26  杰森2019  阅读(241)  评论(0)    收藏  举报