知ing

Java语言程序设计(第三版)

邵丽萍,邵光亚,张后扬 编 / 清华大学出版社

拼命菇凉@ 上传

查看本书

3.1  Java程序结构
3.1.1  Java程序构成
  见P38 例3.1
  说明:
  (1)Java源程序一般包括Java包引入(如果有的话)和类定义两部分;
  (2)Java程序必须包含一个可被外界所直接调用的类,即主类;
  (3)一个Java程序可以定义多个类,但只能有一个主类,Java Applet程序的主类是继承自Applet的子类;Java Application程序的主类是包含main方法的类,应用程序从main方法开始执行;
  (4)类定义由类声明语句和类体组成;
  (5)类声明语句用来说明类的名称、访问权限及类的属性;
  (6)类体也由两部分组成:成员变量和成员方法;
  (7)成员变量为类中定义的变量(又称属性、域),用来说明类的状态和特性。定义成员变量需要声明成员变量的名称、类型。
  (8)成员方法为类中定义的方法,用来实现类的功能和行为,是完成任务的关键。Java Application程序中一定要有main()主方法。而Java Applet程序一般要有init( )初始化方法或paint(Graphics g)画图方法;
  (9)类体中除了成员变量和成员方法说明语句外没有其他语句,Java规定所有操作性语句必须放在成员方法中;
  (10)Java方法类似于其他语言中的函数,可以调用,可以有返回值。成员方法可以继承父类的方法,也可以自定义成员方法。方法中也可以定义局部变量。
3.1.2  Java语句
  语句以分号“;”作为结束标志
  Java语句分为说明性语句和操作性语句。
  说明性语句用来说明包和类的引入、类的声明、变量的声明
  如:import java.applet.Applet ;
  操作性语句有表达式语句、复合语句、选择语句和循环语句等
  1.表达式语句
    int  k, i=3 , j=4;
    k=i*j;
  2.复合语句
  复合语句也称为块(block)语句,是包含在一对大括号“{ }”中的任意语句序列。从语法上讲,一个复合语句被视为一个简单语句。
3.2  选择语句
3.2.1  if语句
  格式: if (条件表达式)
       语句
  功能:条件表达式为true就执行语句
  例:  int i=70;  char c='A';
     if(i>=c)  System.out.println("A小");
     System.out.println("结束");
3.2.2  if……else语句
  格式: if (条件表达式)
       语句1
      else
       语句2
  功能:条件表达式为true就执行语句1,为false执行语句2
  例:if('A'>'a')
     System.out.println("A比a大") ;
    else
      System.out.println("A比a小") ; // A65,a97,所以输出A比a小
    System.out.println("结束");  
3.2.2  if……else 复合结构
   格式: if(条件表达式1)   语句1
         else  if   (条件表达式2)   语句2
               …………
         else  if   (条件表达式n)   语句n
           else  语句  n+1
   功能:如果某个条件表达式的值为true,就执行它后面的语句,其余部分被忽略,若条件表达式都为假,执行else后语句。
例:public class SC{
   public static void 输入分数(int a){
      char 级别;
      if (a>=90)  级别='优';
      else if (a>=80)  级别='良';
      else if (a>=60)  级别='中';
      else   级别='差';
      System.out.println("考试等级为 "+级别);  }

   public static void main(String arg[]) throws Exception{
     if(arg.length==0) System.out.println("您没有输入任何参数") ;
     else if(arg.length==1)
       输入分数(Integer.parseInt(arg[0])); //arg[0]强制转换成int型
     else {System.out.println("您输入的参数太多了") ;
          System.out.println("命令行参数个数为"+arg.length) ; }
   } }
执行:java SC 75     // 输出:考试等级为 中
   java SC       // 输出:您没有输入任何参数
   java SC 75 86  // 输出:您输入的参数太多了
         //       命令行参数个数为2
3.2.4  switch开关语句
  格式:switch  (表达式) {
      case  常量1:[语句块1;] [break;]
        …………
      case  常量n : [语句块n;] [break;]
      [default: 语句块n+1;]
     }
功能:先计算switch表达式,再与每个case常量表达式值相比较,若相同,则执行相应语句被执行。若都不同,则执行default语句n+1(若有的话)
  说明:
  1.switch后表达式必须是整型,字符型;
  2.每个case的常量必须不同;
  3.若没有break,程序将继续执行下一个case语句;
  4.default位置可任意,但要注意break
  例:int a=80,b=9;
    char oper='/';
    switch(oper) {
     case '+' : System.out.println(a+"+"+b+"="+(a+b)); break;
      case '-' : System.out.println(a+"-"+b+"="+(a-b)); break;
      case '*' : System.out.println(a+"*"+b+"="+(a*b)); break;
      case '/' : System.out.println(a+"/"+b+"="+(a/b)); break;
      default  : System.out.println("操作符错误");
  结果:80/9=8    //因为是整型数相除
  思考:
  (1)没有break的情况(将会执行“/”,“*”,“default”行);
  (2)若操作数都不符,default改变位置,能否执行?(能),但后面要加“break”
   例:   public class SC{
         public static void main(String a[])
       {   int i=0,j=5;
          switch(i) {
            case 0: switch(j){
                    case 1: System.out.print("A"); break;
                    case 2: System.out.print("B"); break;
                   default:System.out.print("C") ;  break; }
            case 1: switch(j){
                    case 4: System.out.print("X"); break;
                    case 5: System.out.print("Y"); break;  }
            default: System.out.print("Z"); break;   }}}
   运行结果: CYZ
  
3.3  循环语句
3.3.1  for循环语句(与C、C++相同)
  格式: for(赋初值;判断条件;循环控制变量增减方式)
      {   语句块  }
  功能:(1)第一次进入for循环时,对循环控制变量赋初值;
  (2)根据判断条件检查是否要继续执行循环。为真执行循环体内语句块,为假则结束循环;
  (3)执行完循环体内语句后,系统根据“循环控制变量增减方式”改变控制变量值,再回到步骤(2)根据判断条件检查是否要继续执行循环。
  例:public class SC {
     public static void main(String args[])   {
         int j=0 ;
         for(int i=0 ; i<=5 ; i++)    {
             j+=i ;
             System.out.println("j="+j) ;  }
      }  }
   运行结果:j=0
        j=1
        j=3
        j=6
        j=10
        j=15
3.3.2  while循环语句
  格式:while (条件表达式)
       循环语句块
  功能:先计算条件表达式,为true,则执行循环语句块,为false则跳出循环。
  例:public class SC{
     public static void main(String args[])  {
          char c='a' ;
          while(c<='e')    {
              System.out.print(c+" ") ;
              c=(char)(c+1) ;   }
       } }
    运行结果:a  b  c  d  e
3.3.3  do…while循环语句
  格式: do  { 循环体 }
      while(条件表达式) ;
  注意:while后面的“;”
3.3.4  循环语句的嵌套
例:public class SC {
   public static void main(String args[])
    { int  i , j ;
      for (i=1;i<=9;i++)
        { for (j=1;j<=9;j++)
            System.out.print(i+"*"+j+"="+(i*j)+"\t");
           System.out.println();}
   }  }  
运行结果:1*1=1  1*2=2…………1*9=9
     2*1=2  2*2=4…………2*9=18
     ……………………
     9*1=9  9*2=18…………9*9=81
3.3.5 循环语句小结
  (1)初始化部分:用来设置循环的一些初始条件,计数器清零等;
  (2)循环体部分:这是反复被执行的一段代码,可以是单语句,也可以是复合语句;
  (3)迭代部分:这是当前循环结束,下一次循环开始时执行的语句,常用来使计数器加1或减1;
  (4)终止部分:是一具布尔表达式,每一次循环要对该表达式求值,以验证是否满足循环终止条件。
3.4  跳转语句
  Java支持3种跳转语句:break , continue , return
3.4.1  break语句
  格式:break ;
  功能:(1)退出switch结构;
     (2)退出当前一层循环。
  例:见P51
3.4.2  带标号的break语句
  格式:标识符:   //标识符应在break前面
     ……
     break 标识符 ;
  功能:直接跳转到标识符处,可以退出多重循环;
  例:public class SC{
    public static void main(String args[])   {
         int i,j,k=0;
   ABC:   for(i=0,j=0;i<10 && j<20;i++,j+=5) {
             for(;k<10;)   {
                k = k + 1;
               break ABC;      }
           System.out.println("i = " + i + "  j = " + j);     }
         System.out.println("Exit for loop==> i = " + i);
         System.out.println("Exit for loop==> j = " + j);
         System.out.println("Exit for loop==> k = " + k);
      } }
  运行结果:Exit for loop==> i =0
       Exit for loop==> j =0
       Exit for loop==> k =1
若去除“break ABC;”语句运行结果:
       i=0  j=0
       i=1  j=5
       i=2  j=10
       i=3  j=15
       Exit for loop==> i =4
       Exit for loop==> j =20
       Exit for loop==> k =10
  
  例:  int  i=3  j;
        outer: while(i>0) {
        j=3;
     iner: while(j>0) {
        if(j<2)  break  outer;
        System.out.println(j+”and”+i);
        j--;
     }  i-- ; }
3.4.3  continue语句 
  格式:continue ;
  功能:只有用在循环结构中,跳过循环体中尚未执行的语句,重新开始下一轮循环。从循环体第一个语句开始执行。
  例:public class SC {
     public static void main(String args[])   {
     int m=0 ;
       do {   m++ ;
      if(m/3==0) continue ;  //去除此行语句则输出5个“您好!”
      System.out.println("您好!") ;   }
     while(m<5) ;   }  }
运行结果:输出3个“您好!”
3.4.4  带标号的continue语句 
  格式:标识符:
     ……
     continue  标识符;
  功能:用标号标出想跳到的语句,继续重复执行程序。
  说明:“break  标识符;”是结束循环;“continue  标识符;”是继续循环。
  例:P53
3.4.5  return语句 
  格式:return [表达式] ;
  功能:返回调用的语句,执行它的下一条语句,可以带参数返回。
  说明:当方法用void声明时,说明不需要返回值(即返回类型为空),使用不带参数return语句。不带参数return语句可以省略。
  例:public class SC  {
       public static int Mul( )
         { int  m=1;
          for (int i=1 ; i<=5; i++)
            m=m*i;
          return  m; }
       public static void main(String args[])
         { System.out.println("5!="+ Mul( ));   }  }
运行结果:5!=120

作业:P56 3-3
方法一:public class SC{
    public static void main(String arg[]){
     char c='A';
     while(c<='E') {
     switch(c)
{case 'A': System.out.println("A 等级的分数段是90分以上");break;
case 'B': System.out.println("B 等级的分数段是80~90分以上");break;
case 'C': System.out.println("C 等级的分数段是70~80分以上");break;
case 'D': System.out.println("D 等级的分数段是60~70分以上");break;
case 'E': System.out.println("E 等级的分数段是60分以下");break; }
     c++;}}}
方法二:import java.io.* ;
    public class SC{
    public static void main(String arg[]) throws IOException{
     char c=(char)System.in.read();
     // System.in.read( )只接受一个键盘输入字符,且是int型
     switch(c)
{case 'A': System.out.println("A 等级的分数段是90分以上");break;
case 'B': System.out.println("B 等级的分数段是80~90分以上");break;
case 'C': System.out.println("C 等级的分数段是70~80分以上");break;
case 'D': System.out.println("D 等级的分数段是60~70分以上");break;
case 'E': System.out.println("E 等级的分数段是60分以下");break;
default : System.out.println("输入等级错误!");  }}}

查看更多