2 q1q111 q1q111 于 2013.08.27 17:59 提问

关于Myeclipse中死循环退出的问题。

有三段死循环代码
1.

public void Method()
        {
            int i = 1;

            while(i <= 9 )
            {
                int j = 1;
                while(j<=i)
                {   
                    System.out.print(i*j);
                    System.out.print("\t"); 
                    j++;
                j = 1;      //死循环
                }
                i++;
                System.out.println();       
            }
        }

2.

public void Method()
        {
            for(int j =1 ;j>0; j++)
            {
                System.out.print(j);
            }
        }

3.

public void Method()
        {
            for(int j =1 ;j>0; j++)
            {
                System.out.println(j);
            }
        }

均在MyEclipse10下运行
问题1:代码1 和代码2、3均为死循环,但为何在terminate(停止)的时候代码1 要耗费的时间非常地长。

问题2:代码2 和代码3 的区别在print还是println ,但为何代码2不显示结果,但代码三println正常?

1个回答

zhaaoan
zhaaoan   2016.04.23 21:56

问题1:
第一个题单从两个while语句来说时间复杂度就是O(n2),二,三题时间复杂度是O(n)。而且,题一占用空间资源多,应该总共是10 排数字1。一直循环输出,所以说在空间复杂度上占有资源也很大,故时间长。虽然现在手段,技术用空间复杂度代替了时间复杂度。但是在一定程度上能够获得的效益却不怎么好,毕竟时间真的在消耗着。具体了解: http://wenku.baidu.com/view/190b64c59ec3d5bbfd0a7417.html
问题2:假如我们打印同一个字符(字符串),结果如下:
print()打印结果(页面):
a a a a a a a a a a aaaaaaaaaa

println()打印结果:
a
a
a
a
a
a
a
a
a
a
aaaaaaaaaa

在Java编程中,我们常常用System.out.println()方法来输出字符串,也许我们都已经猜到println()是方法名,但System是什么,out又是什么呢?

这里就涉及用到一个static关键字。其实System是java.lang里面的一个类。而out就是System里面的一个数据成员(也称为字段),但这个成员不是基本类,而是java.io.PrintStream类的对象,java.io.PrintStream类有些什么方法等一下再说。被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以System.out是应用了out这个静态数据成员。而out又是一个java.io.PrintStream类的对象,所以out必然可以调用java.io.PrintStream类里面的方法,println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的。String类的最大范围是;0 到2,147483,647 bytes 。超出范围就会报错。当然无法输出。但是换行就行。所以建议你不要一下子读完啊,可以用缓冲一次读取一点或者用readLine()方法,一行一行的读。就没有问题。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!