zoukankan      html  css  js  c++  java
  • java学习之语句结构

    在java语言当中存在4中语句结构,分别是:

      1、顺序结构

      2、判断结构

      3、选择结构

      4、循环结构

    一、顺序结构:

      所谓的顺序结构,也就是当不指定其他三种语句结构的情况下,语句是从上往下依次执行的,只有碰到其他三种语句结构的时候,才会做相应判断、选择、循环。顺序结构是基础,是默认的执行顺序。

      在顺序结构当中有一种比较特殊的形式就是:

      

    int a = 9;
    { int x = 10; System.out.println("Hello World!"); }

    System.out.println("x == "+x);//这个时候打印x是打印不出来的

      这种语句结构在java语言当中叫做局部代码块。局部代码块的特点就是在其中声明的变量,在其所属的大括号结束之后,就会被内存释放。当我们需要一个变量仅在我们用完之后立即释放的时候,我们可以选择用这种结构表达式。一般用于节约内存的使用,国外的大多数程序开发者都比较注重这一点。

    二、判断结构:

      判断结构当中是以if为基础的,if有三种具体形式:

      1、单if结构,表达方式:

        

    if(条件表达式,必须返回true 或者 是false){
           需要执行的语句    
    }
    

      if之后的大括号,是表示该if语句控制的语句范围。当if之后有且仅有一条语句时,这个时候大括号是可以省略的。

      比如:

      

    int a = 10;
    
    if(a>1)
        System.out.println("A 大于 1");
    
    //当if后紧跟着一条语句时这个时候 大括号"{ }"是可以省略掉的。
    

      

      这里的单if语句的意思就是说,当满足判断条件的时候,if控制体内的语句将被执行,否则被程序忽略不执行。一种判断,一种结果。

      2、if....else....表达方式:

    if(条件表达式,同样必须返回true或者是false)
    {
           需要执行的语句1;
    }else{
           需要执行的语句2;  
    }
    

      这种if表现形式的语句是说,当判断条件满足的时候,执行语句1,当条件不满足的时候将执行语句2;此时表现的是一个判断,一个结果。但是无论怎样,都有且只有一条语句会被执行。

      3、if...else if... ... else ...表达方式:

    if(判断表达式1){
      语句1;
    }else if(判断表达式2){
      语句二;
    }else if(判断表达式3){
      语句三;
    }else if(判断表示式4){
    
    ....
    
    }else{
      语句其他;
    }
    

      这种if的表现形式是说,当判断表达式1对的时候,执行语句1,当判断表达式2对的时候,执行语句2....当都不满足时执行最后一个else内的语句其他;即:多种判断,一种结果。

    三、选择结构:

    在java选择结构中只有一个switch选择结构,他的作用主要用于:当一个变量有多种值的时候,提供给我们一个选择执行的语句,进行操作。代码示例:int a;

    class SwichDemo {

      public static void main(String[] args) {

          int a = 1;
          switch(a){

            case 1:
            System.out.println("A's value is :" + a);
            break;

            case 2:
            System.out.println("A's value is :" + a);
            break;

            default:
            System.out.println("No match value");

          }

      }

    }

      这里需要注意的一点就是break语句,break语句的作用是当条件满足的时候,执行完相对应的语句之后,退出switch语句。假如此时不用break退出的话,那么程序会在执行完对应的语句之后继续把其他的语句打印一遍,直到遇到break跳出switch语句。让我们修改一下 上述的例子看下 :

    class SwichDemo	{
    
    	public static void main(String[] args) {
    		
    		int a = 1;
    		switch(a){
    
    			case 1:
    			System.out.println("A's value is :" + a);
    			//break;
    
    			case 2:
    			System.out.println("A's value is :" + 2);
    			//break;
    
    			case 3:
    			System.out.println("A's value is :" + 3);
    			break;
    
    			default:
    			System.out.println("No match value");
    
    		}
    
    	}
    
    }
    

      那么此时程序将会输出:,直到遇到break语句之后才会退出swtich,否则一直向下执行,直至遇到“}”switch大括号,控制范围表示符为止。

      这里需要注意的一点是 case 语句之后只能跟int,short,byte,char类型的常量,在java后续更新版本当中,有的支持String.

    小结之if 和 switch的区别:

      1、结构的书写格式不一样。

      2、当处理单一变量,多种选择的时候,这两者是都可以的,都能够完满的完成任务。但是,swicth此时会比较清晰的呈现,待判断的变量,还有带选择的选项之间的关系,但是也有一个弱点就是,书写起来要非常谨慎,因为switch书写起来要比if复杂并且容易出错。

      3、switch要比if有局限性。用switch能完成的if都可以完成,用if能完成的switch不一定可以。

      (待续)

    四、循环结构:

      循环结构,是为了方便我们重复处理大量语句而存在的。

      循环语句有三种:while循环、do...while循环、for循环:

      while循环:while循环的特点是,先判断条件真假,如果为假,那么不执行循环体当中的语句;如果为真,就执行循环体内的语句。while循环可以执行,也可以一次不执行。

      代码示例:

      

    int a  = 10;
    while(a>8)//概括号内必须返回boolen值
    {
         System.out.println("a is "+a);       
       a--;//一般情况下需要做条件判断的调整,让循环停止下来。否则即为死循环。
    }
    

      do...while循环:

      do...while循环的特点是,先执行一次,然后判断条件是否满足,如果满足,继续执行,如果不满足则退出循环。但是无论如何,循环体内的语句,至少执行一次。

    代码示例:

    int a = 10;
    do{
        
      System.out.println("Do while 循环");
    }while(a>11);

      小结:那么什么时候使用while循环,什么时候使用do...while循环呢?(暂时没有搞明白....待续)。

      for循环语句:

      for(初始条件表达式;验证条件表达式;循环次数控制表达式){}//循环体

      代码示例:

      

    for(int i = 0 ; i<=10; i++){
        System.out.println("Hello World!");
    }
    

      这里需要注意的是for循环的具体执行顺序:

      ①首先初始化变量i,(注意这里初始化完i之后就不再用它了)

      ②然后判断(i<=10)的真假,如果为真则

      ③System.out.println("Hello  World!");

      ④执行完这个语句之后然后执行 i++;

      ⑤之后又开始计算 i<=10 的真假,如果为真

      ⑥System.out.println("Hello  World!");

      ⑦然后执行i++;

      ⑧当再循环后 i<=10 为假之后,退出循环体

      总体的步骤也就是:初始化条件表达式,这个只初始化一次。之后的工作就集中在判断条件是否满足,如果满足就执行循环体,变量增加;只有当条件不满足的时候,退出循环体。

      for循环还有一个特点就是,内部初始化的变量属于局部作用域,局部作用域的意思是当退出循环体的时候,释放该变量所占的内存空间。在另一方面也就节省了内存的开销。

    五、循环结构的应用场景:

       1、累加思想:

        现在有一个需求就是计算1....100这个数的和;

        代码:

        

    int i = 1;
    int sum;
    while(i<=100){
      sum += i;
      i++; }

      累加器的思想:(待续)

      2、计数器思想:

        现在有一个需求就是,打印出1...100中6的倍数,以及倍数的个数:

        代码:

    int i = 1;
    int count;
    while(i<=100)
    {
      if(i%6 == 0){
        System.out.println(i);
        count++;
      } }
    System.out.println("1到100当中共有6的倍数"+count+"个");

      3、无限循环:

        while无限循环:while(true);

        for 无限循环:for(;;);(需要说明的一点就是,for 初始化表达式默认就是真);

    (未完待续....)

     FOR循环练习:(大圈套小圈的思想:当程序重复做一件事,然而这件重复要做的事内又存在需要重复做的事时,即这个时候就是大圈套小圈的思想。)


    For 联系一、

      需求:在控制台以"*"为单位打印如下字符:

      ******

      ******

      ******

      ******

      思路:

      1、首先要打印4个行,用for循环实现如下:

    for(int i = 0; i<4;i++){
        
      //这里用于打印四个行
    }

      2、在一个行内又得重复打印6个"*",用for循环实现代码如下:

    for(int x = 0; x<6;x++){
    
      //这里用于打印6个"*";
    
    }
    

      3、综合起来讲的话,也就是每打印一个行,都要在这个行内重复打印"*"6次,综合起来就是:

    for(int i = 0; i<4;i++){
       for(int x = 0; x < 6; x ++){
      
        System.out.print("*");

      } }

      4、在每行打印完之后,需要在行尾添加一个换行符:

    for(int i = 0; i < 4; i++){
       for(int x = 0; x < 6; x++){
      
        System.out.print("*");
    
      } 
        System.out.println();
    }
    

      完成。

    For 联系二:

      需求:

      在控制台以"*"为单位打印如下字符图形:

      *******

      ******

      *****

      ****

      ***

      **

      *

      思路: 

      1、这个打印总共有七行,所以肯定要有一个:

      

    for(int i = 0 ; i<7 ; i++)
    {
      
    }
    

      2、打印七行之后,我们再来看下每行的特点。这里每行的特点就是,每行输出的*是由7个逐个往下递减,也就是第一个输出是7个,第二个6个,第三个5个,逐个类推.....此时我们可以定义一个变量b来控制*号出现的次数。

    int b = 7;
    for(int x = 0; x<b; x++){
      System.out.print("*");
    }
    b--;

      3、因为这个需要循环执行,所以需要有一个循环体包裹着才可以。那我们把第二步的循环体,放到第一步当中,看一下执行结果:

    for(int i = 0 ; i<7 ; i++)
    {
      int b = 7;
      for(int x = 0; x<b; x++){
        
        System.out.print("*");  

      }
      b--;
    }

      结果如下:,很不幸啊,结果是错误的!!!到底是什么地方错了呢?让我们仔细阅读下程序代码:

        首先初始化变量,i=0;  之后比较i是否小于7,如果条件为真,那么执行循环体内的内容:

      现在让我们来修正下程序:代码如下:

      

    class ForDemo{
    	
    	public static void main(String[] args) {
    
              int b = 7;
    		
    		for(int i = 0; i<7 ; i++){	
    
    			for(int x = 0; x< b; x++){
    
    				System.out.print("*");
    
    			}
    
    			System.out.println();
    			b--;
    
    		}
    
    	}
    
    }
    

      当然这里还有一种写法,代码:

    class ForDemo{
    	
    	public static void main(String[] args) {
    		
    		for(int i = 7; i>0 ; i--){
    
    			//int b = 7;
    
    			for(int x = 0; x< i; x++){
    
    				System.out.print("*");
    
    			}
    
    			System.out.println();
    			//b--;
    
    		}
    
    	}
    
    }
    

      温馨提示:在你写任何代码,将要运行的时候,花10秒时间去认真读一下,代码的执行顺序,看看他是否真的像你预想的那样执行的。实在不确定再去运行他.....

  • 相关阅读:
    【技术贴】解决Eclipse编译java源文件之后没有生成class文件|找不到class文件
    小米1s 正式为我服役,纪念一下。
    解决servlet的out输出流html中文乱码
    小米1s充电时屏幕一直亮着不关闭的解决办法
    今天遇到的问题分析
    java操作Excel(org.apache.poi.hssf.usermodel)
    HTML滚动文字代码 marquee标签
    MIUI小米 卸载金山安全服务
    Oracle DBA 逻辑备份试题
    Oracle DBA结构试题1
  • 原文地址:https://www.cnblogs.com/sunchuanzhen/p/3313874.html
Copyright © 2011-2022 走看看