Java心得---表达式、流程控制

      今天学习了流程控制,包含各种循环,下面是一些心得和体会:

1.将来我们会学习和使用图形用户界面的java应用程序,图形用户界面的操作系统或应用程序就是对底层操作指令进行了整体的“包装”,例如:用鼠标单击菜单项,最终还是要转换为对底层指令的调用,只要有包装,就会有性能上的消弱和限制,而使用控制台能够在相对的底层实现操控,效率会更高。
2.foreach循环是JDK5.0提供的循环语句,能以更简单的方式来历编集合数组的元素。
3.java语言没有提供和goto语句来控制程序的跳转,这种做法提高率程序流程的控制的可读性,但也降低了程序流程控制的灵活性,为了弥补这种不足,java提供了continue和break来控制循环结构。除此之外,return可以结束这个方法,当然也就结束一次循环。break是退出循环(例如:如果有内外两层,则退出内层循环;想要退出外层需要后面跟一个标签,这个标签用于标识一个外层循环,(java标签就是一个紧跟着英文冒号(:)的标识符,与其他语言不同的是,java中的只有放在循环语句之前才有作用)要注意:break后的标签必须是一个有效的标签,即这个标签break语句所在的循环之前定义,或者在其所在的循环的外层循环之前定义),continue是退出本层循环;(代标号的continue语句可从多重循环的内层循环跳到外层循环,执行标号所标识的循环的下一轮);return 并不是专门用于跳出循环的,而是结束一个方法,一旦在循环体内执行一个return语句,该方法将会结束,循环自然也随之结束。(即从哪开始调用的回到哪;与break相似,continue后也可以跟一个标签,用于直接结束标签所标识循环的当次循环,重新开始下一次循环);即continue只是终止本次循环,接着开始下一次循环,而break则是完全终止循环,可以理解为continue的作用是略过当次循环中剩下的语句,重新开始新的循环。
4.放在if后的小括号里的只能是一个逻辑表达式,即这个表达式的返回值只能是ture或false;if、else if、以及else后花括号中的多行代码被称为代码块;如果代码块中只有一行语句时,可以省略花括号,最好不省略,因为这样有更好的可读性,而且会减少错误的发生。
5.else的含义是“否则”,else本身就是一个条件,他的隐含条件是:对前面条件取反;在使用if。。。else语句有一个基本规则:总是优先把范围小的条件放在前面处理。
6.和if语句不同的是:(1).switch语句中的各case标签后代码块的开始点和结束点非常清晰,因此可以完全省略case后代码块的花括号。与if语句中的else类似,switch中的default看似没有条件其实有条件,即expression表达式的值不能与前面任何一个case的值相等。(2).switch语句控制表达式的类型只能是byte、short、int、char;不能是字符串,这与C#有所不同,控制表达式的数据类型只能是整型或字符型,不能是boolean型。
7.与while不同的是do while循环的循环条件后必须有一个分号(;)而while后必须没有,这个分号表明循环结束;do while循环的循环体至少执行一次。
8.对于for循环而言,循环条件总比循环体要多执行一次,因为最后执行循环条件返回false,将不再执行循环体。for循环的循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次循环,循环迭代语句一样会得到执行。(循环体:被反复执行的代码,需要在适当的时候把循环体条件改为假,结束循环,否则循环体一直执行下去,会形成死循环;循环条件是:一个boolean表达式,用于决定是否执行循环体;跌打语句:这部分在一次循环体执行结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束。(比如:i++;j++))
9.由于while、do while循环的循环迭代语句紧跟着循环体,因此如果循环体不能完全执行,如使用continue来结束本次循环,则循环迭代语句不会被执行,但for循环的循环迭代语句并没有与循环体放在一起,因此不管是否使用continue来结束本次循环,循环迭代语句一样会获得执行。
10.for循环圆括号中的两个分号是必须的,初始化语句、循环条件、迭代语句部分都是可以省略的,如果省略了循环条件,则这个循环条件默认是ture,将会产生一个死循环。(死循环:while(1)=while(ture)=for(;;))使用for循环时还可以把初始化条件定义在循环体之外,把循环迭代语句放在循环体内,这种做法非常类似与while。如果使用continue来结束本次循环,将会导致循环迭代语句得不到执行。把for循环的初始化语句放在循环之前定义还有一个作用:可以扩大初始化语句中所定义的变量的作用域。(作用域扩大的后果:如果该方法还有另一个循环也需要定义循环变量,则不能再使用i作为循环变量)(在for循环中定义的变量,其作用域仅在该循环内有效,for循环终止以后这些变量不能再被访问)相比之下这种方法更常见:
  int temp=0;
  for(int i=0;i<10;i++){System.out.println(i+"\n") temp=i;}
  System.out.println("循环结束")
使用一个变量templ来保存循环变量i的值,使得程序更加清晰,变量i和templ的责任更加清晰。
11.假设外层循环为n次,内层为m次,那么内层循环的循环体实际上需要执行n*m次。(外层循环一般管行,内层管列。)
12.源文件开头的import语句的作用是导入java.util包中定义的Scanner类。Scanner.in代表键盘输入,是一个由系统提供的关联到控制台输入的java对象,Scanner.out是输出。介绍其中几个常用的方法:
  java.util.Scanner类的功能并不仅限于控制台输入数据的读取,它的对象还可以关联到字符串、文件或其他的数据源。
  (1).构造方法 public Scanner(InputStream source) 例如,Scanner sc=new Scanner(System.in);
  (2).public Sting next() 读取下一个单词,以空格符或换行符作为分隔单词的标记。例如,String name=sc.next();
  (3).public int nextInt() 读取一个整数,如果输入的下一个单词不能解析为有效的整数(例如包含汉字等非数值字符),则出错。
  (4).public double nextDouble() 读取一个双精度浮点数,如果输入的下一个单词不能解析为有效的浮点数,则出错。
  (5).public Boolean nextBoolean() 读取一个布尔值,如果输入的下一个单词不能解析为有效的boolean值(true或false),则出错

 

posted @ 2012-04-03 09:36  yangkai_keven  阅读(312)  评论(0编辑  收藏  举报