【Java学习笔记】基础知识学习3【基本循环方法技巧】
2013-07-19 22:49
776 查看
晚上了,按照承诺开始继续写:
按照书上的顺序,现在我开始看循环的内容。
也就是for,while循环
这个是一个简单的定义一个整形变量,并且进行1到100的加法,得到了和高斯小时候一样的结果。
这里小小的提一下:
输出一段文字,使用的是 System.out.println,很麻烦。
毕竟打字打出这么长一串,即使使用自动提示的功能也不是很方便。
所以,我一般是在工程里面建立一个类,加上一个静态方法,专门用来显示字符串。这个类和它的方法我用很简单的字符来表示。可以极大的提高代码编写速度。
例如,将
T.O
方便又简单,调用方法如下:
或者
接下来是while循环:
接下来,是一个Do……While的循环:
同样,这个的语法也是与C语言相同的。接下来是结束本次循环的语句continue。循环的执行是从循环体的第一条语句执行到循环体的最后一条语句。这里的continue语句的目的就是从出现continue的地方开始,直接跳回循环体的头部,进行下一次循环。具体代码如下:
这个程序在执行到i=10的时候,跳出了本次循环,于是没有对10进行累加,所以结果是5050-10=5040接下来,是break语句。这个语句可以在循环中退出循环一个简单的例子(根据上面的continue语句改编,将continue改成了break):
接着,一个想法打断了我,如果循环有嵌套,那么break在嵌套中会有什么表现呢?
首先,一个两层循环,我把条件控制的break语句放在内层循环中;
代码如下:
输出的结果:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner1 loop:i=0 , j=6inner2 loop:i=1 , j=0inner2 loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2
loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner1 loop:i=1 , j=6inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2 , j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner1 loop:i=2 , j=6inner2 loop:i=3
, j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2 loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner1 loop:i=3 , j=6inner2 loop:i=4 , j=0inner2 loop:i=4 , j=1inner2 loop:i=4 , j=2inner2 loop:i=4 , j=3inner2 loop:i=4 , j=4inner2
loop:i=4 , j=5inner2 loop:i=4 , j=6inner1 loop:i=4 , j=6inner2 loop:i=5 , j=0inner2 loop:i=5 , j=1inner2 loop:i=5 , j=2inner2 loop:i=5 , j=3inner2 loop:i=5 , j=4inner2 loop:i=5 , j=5inner2 loop:i=5 , j=6inner1 loop:i=5 , j=6inner2 loop:i=6 , j=0inner2 loop:i=6
, j=1inner2 loop:i=6 , j=2inner2 loop:i=6 , j=3inner2 loop:i=6 , j=4inner2 loop:i=6 , j=5inner2 loop:i=6 , j=6inner1 loop:i=6 , j=6inner2 loop:i=7 , j=0inner2 loop:i=7 , j=1inner2 loop:i=7 , j=2inner2 loop:i=7 , j=3inner2 loop:i=7 , j=4inner2 loop:i=7 , j=5inner2
loop:i=7 , j=6inner1 loop:i=7 , j=6inner2 loop:i=8 , j=0inner2 loop:i=8 , j=1inner2 loop:i=8 , j=2inner2 loop:i=8 , j=3inner2 loop:i=8 , j=4inner2 loop:i=8 , j=5inner2 loop:i=8 , j=6inner1 loop:i=8 , j=6inner2 loop:i=9 , j=0inner2 loop:i=9 , j=1inner2 loop:i=9
, j=2inner2 loop:i=9 , j=3inner2 loop:i=9 , j=4inner2 loop:i=9 , j=5inner2 loop:i=9 , j=6inner1 loop:i=9 , j=6out loop:i=10 , j=6加入了Break的结果是:0通过以上的数据可以知道,内层循环中的break会打断本层的循环(j 循环),但是不会打断外层的循环(i 循环)接下来尝试下,把break放在外层循环(i 循环中)。按照我的预期,应该就是直接退出外层循环,也就是干干净净的结束循环。测试结果是证明了我的猜想:(如下代码)
输出结果是:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner2 loop:i=0 , j=7inner2 loop:i=0 , j=8inner2 loop:i=0 , j=9inner1 loop:i=0 , j=10inner2 loop:i=1 , j=0inner2
loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2 loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner2 loop:i=1 , j=7inner2 loop:i=1 , j=8inner2 loop:i=1 , j=9inner1 loop:i=1 , j=10inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2
, j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner2 loop:i=2 , j=7inner2 loop:i=2 , j=8inner2 loop:i=2 , j=9inner1 loop:i=2 , j=10inner2 loop:i=3 , j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2
loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner2 loop:i=3 , j=7inner2 loop:i=3 , j=8inner2 loop:i=3 , j=9inner1 loop:i=3 , j=10out loop:i=3 , j=10加入了Break的结果是:0可以明确的看到结果的区别。综合运用前面的东西,写一个菱形绘制的代码:
【因为空格宽度的原因,无法显示图示】
按照书上的顺序,现在我开始看循环的内容。
也就是for,while循环
package sunsoft.testideas; public class Ex_forloop { void LoopTest(){ int i,totalnum=0; for(i=1;i<101;i++){ totalnum=totalnum+i; } System.out.println("计算结果是:"+totalnum); } }
这个是一个简单的定义一个整形变量,并且进行1到100的加法,得到了和高斯小时候一样的结果。
这里小小的提一下:
输出一段文字,使用的是 System.out.println,很麻烦。
毕竟打字打出这么长一串,即使使用自动提示的功能也不是很方便。
所以,我一般是在工程里面建立一个类,加上一个静态方法,专门用来显示字符串。这个类和它的方法我用很简单的字符来表示。可以极大的提高代码编写速度。
例如,将
System.out.println换成
T.O
方便又简单,调用方法如下:
System.out.println("I Love China");
或者
T.O("I Love China");接下来所有代码中的文字输出都会使用T.O来代替
接下来是while循环:
package sunsoft.testideas; public class Ex_WhileLoop { void TestWhileLoop(){ int i=1; int sum=0; while(i<101){ sum+=i; i++; } T.O("while结果是:"+sum); } }这个也是一个1加到100的求和计算。使用的while,其语法与C语言完全一致。
接下来,是一个Do……While的循环:
package sunsoft.testideas;
public class Ex_DoWhileLoop { void Test_DoWhileLoop(){ int i=1; int sum=0; do{ sum+=i; i++; }while(i<101); T.O("dowhile结果是:"+sum); } }
同样,这个的语法也是与C语言相同的。接下来是结束本次循环的语句continue。循环的执行是从循环体的第一条语句执行到循环体的最后一条语句。这里的continue语句的目的就是从出现continue的地方开始,直接跳回循环体的头部,进行下一次循环。具体代码如下:
package sunsoft.testideas;
public class Ex_Continue { void Loop_Continue(){ int i=0; int sum=0; while(i<100){ i++; if(i==10) continue; sum+=i; } T.O("加入了Continue的结果是:"+sum); } }
这个程序在执行到i=10的时候,跳出了本次循环,于是没有对10进行累加,所以结果是5050-10=5040接下来,是break语句。这个语句可以在循环中退出循环一个简单的例子(根据上面的continue语句改编,将continue改成了break):
package sunsoft.testideas;
public class Ex_BreakLoop { void Loop_Break(){ int i=0; int sum=0; while(i<100){ i++; if(i==10) break; sum+=i; } T.O("加入了Break的结果是:"+sum); } }
接着,一个想法打断了我,如果循环有嵌套,那么break在嵌套中会有什么表现呢?
首先,一个两层循环,我把条件控制的break语句放在内层循环中;
代码如下:
package sunsoft.testideas;
public class Ex_QTLoopBreak { void MultiLoop_Break(){ int i=0,j=0; int sum=0; for(i=0;i<10;i++){ for(j=0;j<10;j++){ T.O("inner2 loop:i="+i+" , j="+j); if(j==6) break; } T.O("inner1 loop:i="+i+" , j="+j); } T.O("out loop:i="+i+" , j="+j); T.O("加入了Break的结果是:"+sum); } }
输出的结果:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner1 loop:i=0 , j=6inner2 loop:i=1 , j=0inner2 loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2
loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner1 loop:i=1 , j=6inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2 , j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner1 loop:i=2 , j=6inner2 loop:i=3
, j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2 loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner1 loop:i=3 , j=6inner2 loop:i=4 , j=0inner2 loop:i=4 , j=1inner2 loop:i=4 , j=2inner2 loop:i=4 , j=3inner2 loop:i=4 , j=4inner2
loop:i=4 , j=5inner2 loop:i=4 , j=6inner1 loop:i=4 , j=6inner2 loop:i=5 , j=0inner2 loop:i=5 , j=1inner2 loop:i=5 , j=2inner2 loop:i=5 , j=3inner2 loop:i=5 , j=4inner2 loop:i=5 , j=5inner2 loop:i=5 , j=6inner1 loop:i=5 , j=6inner2 loop:i=6 , j=0inner2 loop:i=6
, j=1inner2 loop:i=6 , j=2inner2 loop:i=6 , j=3inner2 loop:i=6 , j=4inner2 loop:i=6 , j=5inner2 loop:i=6 , j=6inner1 loop:i=6 , j=6inner2 loop:i=7 , j=0inner2 loop:i=7 , j=1inner2 loop:i=7 , j=2inner2 loop:i=7 , j=3inner2 loop:i=7 , j=4inner2 loop:i=7 , j=5inner2
loop:i=7 , j=6inner1 loop:i=7 , j=6inner2 loop:i=8 , j=0inner2 loop:i=8 , j=1inner2 loop:i=8 , j=2inner2 loop:i=8 , j=3inner2 loop:i=8 , j=4inner2 loop:i=8 , j=5inner2 loop:i=8 , j=6inner1 loop:i=8 , j=6inner2 loop:i=9 , j=0inner2 loop:i=9 , j=1inner2 loop:i=9
, j=2inner2 loop:i=9 , j=3inner2 loop:i=9 , j=4inner2 loop:i=9 , j=5inner2 loop:i=9 , j=6inner1 loop:i=9 , j=6out loop:i=10 , j=6加入了Break的结果是:0通过以上的数据可以知道,内层循环中的break会打断本层的循环(j 循环),但是不会打断外层的循环(i 循环)接下来尝试下,把break放在外层循环(i 循环中)。按照我的预期,应该就是直接退出外层循环,也就是干干净净的结束循环。测试结果是证明了我的猜想:(如下代码)
package sunsoft.testideas;
public class Ex_QTLoopBreak { void MultiLoop_Break(){ int i=0,j=0; int sum=0; for(i=0;i<10;i++){ for(j=0;j<10;j++){ T.O("inner2 loop:i="+i+" , j="+j); } T.O("inner1 loop:i="+i+" , j="+j); if(i==3) break; } T.O("out loop:i="+i+" , j="+j); T.O("加入了Break的结果是:"+sum); } }
输出结果是:inner2 loop:i=0 , j=0inner2 loop:i=0 , j=1inner2 loop:i=0 , j=2inner2 loop:i=0 , j=3inner2 loop:i=0 , j=4inner2 loop:i=0 , j=5inner2 loop:i=0 , j=6inner2 loop:i=0 , j=7inner2 loop:i=0 , j=8inner2 loop:i=0 , j=9inner1 loop:i=0 , j=10inner2 loop:i=1 , j=0inner2
loop:i=1 , j=1inner2 loop:i=1 , j=2inner2 loop:i=1 , j=3inner2 loop:i=1 , j=4inner2 loop:i=1 , j=5inner2 loop:i=1 , j=6inner2 loop:i=1 , j=7inner2 loop:i=1 , j=8inner2 loop:i=1 , j=9inner1 loop:i=1 , j=10inner2 loop:i=2 , j=0inner2 loop:i=2 , j=1inner2 loop:i=2
, j=2inner2 loop:i=2 , j=3inner2 loop:i=2 , j=4inner2 loop:i=2 , j=5inner2 loop:i=2 , j=6inner2 loop:i=2 , j=7inner2 loop:i=2 , j=8inner2 loop:i=2 , j=9inner1 loop:i=2 , j=10inner2 loop:i=3 , j=0inner2 loop:i=3 , j=1inner2 loop:i=3 , j=2inner2 loop:i=3 , j=3inner2
loop:i=3 , j=4inner2 loop:i=3 , j=5inner2 loop:i=3 , j=6inner2 loop:i=3 , j=7inner2 loop:i=3 , j=8inner2 loop:i=3 , j=9inner1 loop:i=3 , j=10out loop:i=3 , j=10加入了Break的结果是:0可以明确的看到结果的区别。综合运用前面的东西,写一个菱形绘制的代码:
package sunsoft.testideas; public class Ex_LinXing { void DrawLinXing(){ int Lines; int Rows=6; for(Lines=-5;Lines<6;Lines++){ DrawSpace(Math.abs(Lines)); DrawSign(2*(Rows-Math.abs(Lines))-1); System.out.print('\n'); } } void DrawSpace(int num){ int k; for(k=0;k<num;k++){ System.out.print(' '); } } void DrawSign(int num){ int k; for(k=0;k<num;k++){ System.out.print('&'); } } }绘制结果可以自己看。
【因为空格宽度的原因,无法显示图示】
相关文章推荐
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.4基本类型与运算(4.4.1)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.2)
- 【Java学习笔记】基础知识学习18【一个小文件的复制方法】
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.8-4.1.9)
- 【java基础知识(学习笔记)】--方法的重载
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.11-4.1.12)
- 【java基础知识(学习笔记)】--方法的重载注意事项
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.1)
- 【Java学习笔记】基础知识学习4【数组的基本知识】
- 【Java学习笔记】基础知识学习6【类的基础、方法,对象基础、包】
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.6-4.1.7)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.10)
- [学习笔记] Java核心技术 卷一:基础知识 Java 的基本程序设计结构(一)
- 【java基础知识(学习笔记)】--方法中的参数传递
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.1基本概念(4.1.3)
- 【Java学习笔记】基础知识学习1【基本输出,数据类型,基础运算符号】
- java学习笔记:Java语法基础2(循环,函数,重载,数组,方法)
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.4基本类型与运算(4.4.5-4.4.10)
- 【Java学习笔记】基础知识学习19【一个大文件的复制方法】
- Java基础学习笔记十四 常用API之基本类型包装类