public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello world!"); //输出文中信息到控制台
    }
}
public class Hello
{
    // 是程序的起点,所有程序由此开始运行
    public static void main(String args[])
    {
    // 此语句表示向屏幕上打印"Hello World !"字符串
    System.out.println("Hello World !");
    }
}
public class Xiti_1
{
    public static void main(String args[])
    {
    System.out.println("This is my Java program");
    }
}
public class Xiti_2
{
    public static void main (String args[])
    {
        int x=10;
        int y=2;
        System.out.println(x/y);
     }
}public class Xiti_3 {
    public static void main(String args[])
    {
        System.out.println("【《Java从入门到精通》是学习Java的最佳宝典】");
    }
}
public class Xiti_4
{
    public static void main(String[] args)
    {
         int sum = 0 ;
         for(int i=1;i<=100;i++)
         {
               sum = sum + i ;
                   System.out.println("i = "+i+", sum = "+sum);
         }
    }
}
public class Xiti_5
{
  public static void main(String args[])
  {
    long long_min = java.lang.Long.MIN_VALUE ;    // 得到长整型的最小值

    System.out.println("LONG的最小值: "+long_min);

   }
}
public class Xiti_6 {
    public static void main(String args[])
    {
        System.out.println(((12345679*9) > (97654321*3))? true:false);
    }
}
public class Xiti_7
{
    public static void main(String[] args)
    {
         int sum = 0 ;
        // 下面是for循环的使用,计算1~5数字累加之和
         for(int i=1;i<=100;i++)
         {
               sum = sum + i ;
         }
        System.out.println("1+2+3+……= "+sum);
    }
}
// 以下程序是数组的排序操作,在这里使用了sort方法对数组进行排序
import java.util.*;
public class Xiti_8
{
    public static void main(String[] args)
    {
         int a[] = {25, 24, 12, 76, 98, 101, 90, 28} ;

         System.out.print("数组排序前的顺序:");
         for(int i=0;i<a.length;i++)
               System.out.print(a[i]+"  ");
         Arrays.sort(a);                    // 数组的排序方法
         System.out.print("\n数组排序后的顺序:");
         for(int i=0;i<a.length;i++)
           System.out.print(a[i]+"  ");
    }
}
public class TestFinal1 {
    static final int YEAR = 365;
    public static void main(String[] args) {
      System.out.println("两年等于"+2*YEAR+"天");
    }
}
// 下面的程序声明了两个变量,一个是整型,一个是字符型
public class TestJavaintchar
{
    public static void main(String args[])
    {
        int num = 3 ;                   // 声明一整型变量num,赋值为3
        char ch = 'z';                  // 声明一字符变量ch,赋值为z
        System.out.println(num+ "是整数!");        // 输出num的值
        System.out.println(ch + "是字符!");       // 输出ch的值
     }
}
public class TestMemVar {

    static int  a = 1; //定义一个成员变量
    public static void main(String[] args) {
        System.out.println("成员变量a的值为:"+ a);
  }
}
// 以下程序说明了局部变量的使用方法
public class Jubudemo
{
     public static void main(String[] args)
     {
       int sum = 0 ;
      // 下面是for循环的使用,计算1~5数字累加之和
       for(int i=1;i<=5;i++)
       {
            sum = sum + i ;
               System.out.println("i = "+i+", sum = "+sum);
       }
     }
}
// 下面这段程序声明了两个变量,一个是整型,一个是浮点型
public class TestJava3_11
{
    public static void main(String args[])
    {
        int a = 156 ;
        float b = 24.1f ;   // 声明一浮点型变量f,并赋值

        System.out.println("a = "+a+" , b = "+b);
        System.out.println("a / b = "+(a/b));   // 这里整型会自动转化为浮点型
    }
}
// 下面范例中说明了自动转换和强制转换这两种转换的使用方法
public class TestJava3_12
{
    public static void main(String args[])
    {
        int a = 55 ;
        int b= 9 ;
        float g,h ;

        System.out.println("a = "+a+" , b = "+b);
        g = a/b ;
        System.out.println("a / b ="+g+"\n");
        System.out.println("a = "+a+" , b = "+b);
        h = (float)a/b ;            //在这里将数据类型进行强制类型转换
        System.out.println("a /b = "+h);
    }
}
public class bytedemo
{
  public static void main(String args[])
  {
    byte byte_max = Byte.MAX_VALUE ;    // 得到Byte型的最大值

    System.out.println("BYTE的最大值: "+byte_max);
   }
}public class shortdemo
{
  public static void main(String args[])
  {
    short short_max = Short.MAX_VALUE ;     // 得到短整型的最大值

    System.out.println("SHORT的最大值: "+short_max);

   }
}public class intdemo
{
  public static void main(String args[])
  {
    int int_max =  java.lang.Integer.MAX_VALUE  ;     // 得到整型的最大值

    System.out.println("INT 的最大值: "+int_max);

   }
}public class longdemo
{
  public static void main(String args[])
  {
    long long_max = java.lang.Long.MAX_VALUE ;    // 得到长整型的最大值

    System.out.println("LONG的最大值: "+long_max);

   }
}// 下面这道程序说明了浮点数类型的使用方法
public class TestJava3_8
{
    public static void main(String args[])
    {
        float num = 3.0f ;
        System.out.println(num+" *"+num+" = "+(num*num));
    }
}
// 下面这道程序用于取得单精度和双精度浮点数类型的最大、最小值
public class TestJava3_9
{
    public static void main(String args[])
    {
        System.out.println("float_max = "+java.lang.Float.MAX_VALUE);
        System.out.println("float_min = "+java.lang.Float.MIN_VALUE);
        System.out.println("double_max = "+java.lang.Double.MAX_VALUE);
        System.out.println("double_min = "+java.lang.Double.MIN_VALUE);
    }
}
// 字符类型也可以直接赋给数值,下面的这段程序就是采用这种赋值方式
public class TestJava3_6
{
    public static void main(String args[])
    {
    char ch1 = 97 ;
    char ch2 = 'a' ;

    System.out.println("ch1 = "+ch1);
    System.out.println("ch2 = "+ch2);
    }
}
// 下面这道程序表明了转义字符的使用方法
public class TestJava3_7
{
    public static void main(String args[])
    {
        char ch ='\"';

        System.out.println(ch+"测试转义字符!"+ch);
        System.out.println("\"hello world!\"");
     }
}
// 下面的程序声明了一个布尔值类型的变量
public class TestJava3_10
{
    public static void main(String args[])
    {
        // 声明一布尔型的变量status,布尔型只有两个取值:true、false
        boolean status = true ;
        System.out.println("status = "+status);
    }
}
public class timesdemo
{
    public static void main(String[] args)
     {
       int a = 12345679 , b = 9 ;

       System.out.println("a*b = "+a*b);
     }
}
public class relationdemo {
    public static void main(String[] args) {
        int a = 5 , b = 4;
        boolean t1 = a > b;
        boolean t2 = a == b;
        System.out.println("a > b :" + t1);
        System.out.println("a == b :" + t2);
    }
}
public class logicdemo {
    public static void main (String args[])
    {
        boolean t = (1+1 == 2) && (1+2 ==3);
        System.out.println("(1+1 ==2) && (1+2 ==3) : "+ t);
    }
}
public class conditiondemo {
    public static void main (String args [])
    {
        boolean t = (1+1 == 2)? true : false;
        System.out.println("1+1 ==2 :"+ t);
    }
}
public class attribdemo {
    public static void main (String args[])
    {
        int x=12345679 , y=81 , z;
        z = x*y;
        System.out.println("x*y = " +z);
    }
}
// 下面的程序说明了表达式类型的自动转换问题
public class TestJava3_22
{
    public static void main(String[] args)
    {
         char ch = 'a' ;
         short a = -2 ;
         int b = 3 ;
         float f = 5.3f ;
         double d = 6.28 ;

         System.out.print("(ch / a) - (d / f) - (a + b) = ");
         System.out.println((ch / a) - (d / f) - (a + b));
    }
}
public class spacedemo {
    public static void main (String args[])
    {
        int a;
        a=7;
        a=a*a;
        System.out.println("a*a = " + a);
    }
}
// 在程序中赋值采用“=”
public class TestJava3_13
{
    public static void main(String args[])
    {
    int num = 22;           // 声明整数变量num,并赋值为22

    System.out.println("第一次赋值后,num = "+num);     // 输出num的值

    num = num - 3;          // 将变量num的值减3之后再赋给num变量
    System.out.println("改变之后的值,num = "+num);    //输出后num的值
    }
}
// 下面这段程序说明了一元运算符的使用
public class TestJava3_14
{
    public static void main(String args[])
    {
        byte a = java.lang.Byte.MAX_VALUE ; // 声明并将其类型最大值赋给a
        boolean b = false ;

        System.out.println("a = "+a+" , ~a = "+(~a));
        System.out.println("b = "+b+" , !b = "+(!b));
    }
}
// 下面这段程序说明了除法运算符的使用方法
public class TestJava3_15
{
    public static void main(String[] args)
    {
        int a = 13 ;
        int b = 4 ;

        System.out.println("a = "+a+" , b = "+b);
        System.out.println("a / b = "+(a/b));
        System.out.println("a / b = "+((float)a/b));      // 进行强制类型转换
    }
}
// 在JAVA中用%进行取模操作
public class TestJava3_16
{
    public static void main(String[] args)
    {
        int a = 5 ;
        int b = 3 ;

    System.out.println(a+" % "+b+" = "+(a%b));
    System.out.println(b+" % "+a+" = "+(b%a));
    }
}
// 下面这段程序说明了关系运算符的使用方法,关系运算符返回值为布尔值
public class TestJava3_17
{
    public static void main(String[] args)
    {
        if(5>2)
        System.out.println("返回值:"+(5>2));

        if(true)
        System.out.println("Hello Java !");

        if((3+6)==(3-6))
        System.out.println("I like Java !");
    }
}
// 下面这段程序说明了“++”的两种用法的使用
public class TestJava3_18
{
    public static void main(String args[])
    {
        int a = 3 , b = 3 ;

        System.out.print("a = "+a);     // 输出a
        System.out.println(" , a++ = "+(a++)+" , a= "+a);       // 输出a++和a
        System.out.print("b = "+b);                      // 输出b
        System.out.println(" , ++b = "+(++b)+" , b= "+b);       // 输出++b和b
    }
}
// 下面这段程序是对与操作进行的说明,返回值为布尔类型
public class TestJava3_19
{
    public static void main(String[] args)
    {
        int a = 56 ;

        if((a<0)||(a>100))
    System.out.println("输入的数据有错误!");
    if((a<60)&&(a>49))
    System.out.println("准备补考吧!");
    }
}
// 下面是关于简洁写法的一段程序
public class TestJava3_20
{
    public static void main(String[] args)
    {
        int a = 5 , b = 8 ;

        System.out.println("改变之前的数是: a = "+a+" , b = "+b);
        a +=b ;
        System.out.println("改变之后的数是: a = "+a+" , b = "+b);
    }
}
// 下面的程序说明了简洁表达式的使用方法,但这种方式现在已不提倡使用了。
public class TestJava3_21
{
    public static void main(String[] args)
    {
         int a = 10 , b = 6 ;

         System.out.println("改变之前的数: a = "+a+" , b = "+b);
         a -= b++ ;          // 先计算a-b的值,将结果设给a之后,再将b值加1
         System.out.println("改变之后的数: a = "+a+" , b = "+b);
    }
}
// 下面的程序是介绍break的使用方法
public class TestJavabreak
{
    public static void main(String[] args)
    {
         int i ;

         for(i=1;i<=10;i++)
         {
               if(i%3 == 0)
                 break ;            // 跳出整个循环体
               System.out.println("i = "+i);
         }
         System.out.println("循环中断:i = "+i);
     }
}
// 下面的程序是介绍continue的使用方法
public class TestJavacontinue
{
    public static void main(String[] args)
    {
         int i ;

         for(i=1;i<=10;i++)
         {
               if(i%3==0)
                 continue ;                // 跳出一次循环
               System.out.println("i = "+i);
         }
         System.out.println("循环中断:i = "+i);
     }
}
// 下面的程序说明了if语句的操作,只有当条件满足时才会被执行
public class TestJavaif
{
    public static void main(String[] args)
    {
         int a = 6 , b = 5 ;

         System.out.println("a = "+a+" , b = "+b);
         if(a>b)
               System.out.println("a - b = "+(a-b));
         System.out.println("a * b = "+(a*b));
    }
}
// 以下程序说明了if...else的使用方法
public class TestJavaif2
{
    public static void main(String[] args)
    {
         int a = 5 ;

         if(a%2 == 1)
           System.out.println(a+" 是奇数!");
         else
               System.out.println(a+" 是偶数!");
    }
}
// 以下程序说明了多分支条件语句if..else if ...else的使用
public class TestJavaduofenzhi
{
    public static void main(String[] args)
{
         int x = 1 ;

         if(x==1)
           System.out.println("x = = 1");
         else if(x==2)
               System.out.println("x = = 2");
         else if(x==3)
           System.out.println("x = = 3");
        else
              System.out.println("x > 3");
    }
}
// 以下程序说明了条件运算符的使用方法
public class TestJavatiaojian
{
    public static void main(String[] args)
    {
         int a = 5 , b = 13 , max ;

         max = (a>b)?a:b ;

         System.out.println("a = "+a+" , b = "+b);
         System.out.println("最大的数是: "+max);
    }
}
// 以下程序说明了多分支条件语句的使用
public class TestJavaswitch
{
    public static void main(String[] args)
    {
         int a = 100 , b = 7 ;
         char oper ='/' ;

         switch(oper)        // 用switch实现多分支语句
{
               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+" = "+((float)a/b));
                   break ;
               default:
                 System.out.println("未知的操作!");
         }
    }
}
// 以下程序说明了while循环的使用方法
public class TestJavawhile
{
    public static void main(String[] args)
    {
         int i = 1 ,sum = 0 ;

         while(i<=10)
         {
           sum += i ;     // 累加计算
               i++ ;
         }
         System.out.println("1 + 2 + ...+ 10 = "+sum);    // 输出结果
    }
}
// 以下程序说明了do...while循环的使用
public class TestJavadowhile
{
    public static void main(String[] args)
    {
         int i = 1 ,sum = 0 ;
        // do.while是先执行一次,再进行判断。即,循环体至少会被执行一次
         do
         {
           sum += i ;                            // 累加计算
               i++ ;
         }while(i<=10);
         System.out.println("1 + 2 + ...+ 10 = "+sum);    // 输出结果
    }
}
// 以下程序说明了for循环的使用方法
public class TestJavafor
{
    public static void main(String[] args)
    {
         int i , sum = 0 ;
        // for循环的使用,用来计算数字累加之和
         for(i=1;i<=10;i++)
           sum += i ;        // 计算sum = sum+i
         System.out.println("1 + 2 + ... + 10 = "+sum);
    }
}
// 以下程序说明了for循环的嵌套使用方法
public class TestJavafor2
{
    public static void main(String[] args)
    {
         int i , j ;
        // 用两层for循环输出乘法表
         for(i=1;i<=9;i++)
         {
               for(j=1;j<=9;j++)
                    System.out.print(i+"*"+j+"="+(i*j)+"\t");
               System.out.print("\n");
         }
    }
}
   //下面这段程序说明了一维数组的使用方法
   public class TestJavayiwei
  {
     public static void main(String args[])
  {
     int i;
     int a[];    // 声明一个整型数组a
     a=new int[3];     // 开辟内存空间供整型数组a使用,其元素个数为3

     for(i=0;i<3;i++)        // 输出数组的内容
        System.out.print("a["+i+"] = "+a[i]+",\t");

     System.out.println("\n数组长度是: "+a.length);     // 输出数组长度
  }
  }
    //一维数组的赋值,这里采用静态方式赋值
    public class TestJavayiweifuzhi
    {
      public static void main(String args[])
      {
             int i;
             int a[]={5,6,8};            //声明一个整数数组a并赋初值�飙

             for(i=0;i<a.length;i++)        // 输出数组的内容
                System.out.print("a["+i+"]="+a[i]+",\t");

             System.out.println("\n数组长度是:"+a.length);
      }
    }
    // 这个程序主要是求得数组中的最大值和最小值
    public class TestJavazuidazuixiao
    {
      public static void main(String args[])
      {
             int i,min,max;
             int A[]={74,48,30,17,62};            // 声明整数数组A,并赋初值�

             min=max=A[0];
             System.out.print("数组A的元素包括: ");
             for(i=0;i<A.length;i++)
            {
                System.out.print(A[i]+"  ");
                if(A[i]>max)                // 判断最大值�
                     max=A[i];
                if(A[i]<min)                // 判断最小值�
                     min=A[i];
             }
             System.out.println("\n数组的最大值是:"+max);     // 输出最大值�
             System.out.println("数组的最小值是:"+min);        // 输出最小值�
      }
    }
    // 以下这段程序说明数组的拷贝操作
    public class TestJavashuzucopy
    {
    public static void main(String[] args)
          {
            int a1[] = {1,2,3,4,5} ;    //声明两个整型数组a1、a2,并进行静态初始化
            int a2[] = {9,8,7,6,5,4,3} ;
            System.arraycopy(a1,0,a2,0,3);        // 执行数组拷贝的操作
            System.out.print("a1数组中的内容:");
            for(int i=0;i<a1.length;i++)            // 输出a1数组中的内容
                 System.out.print(a1[i]+"  ");
            System.out.println();

            System.out.print("a2数组中的内容:");
            for(int i=0;i<a2.length;i++)            //输出a2数组中的内容
              System.out.print(a2[i] +"  ");
            System.out.println("\n数组拷贝完成!");
          }
    }
    // 以下程序是数组的排序操作,在这里使用了sort方法对数组进行排序
    import java.util.*;
    public class TestJavasort
    {
          public static void main(String[] args)
          {
            int a[] = {4,32,45,32,65,32,2} ;

            System.out.print("数组排序前的顺序:");
            for(int i=0;i<a.length;i++)
                  System.out.print(a[i]+"  ");
            Arrays.sort(a);                    // 数组的排序方法
            System.out.print("\n数组排序后的顺序:");
            for(int i=0;i<a.length;i++)
              System.out.print(a[i]+"  ");
          }
    }
    // 二维数组的使用说明,这里采用静态赋值的方式
    public class TestJavaerwei
    {
          public static void main(String args[])
       {
              int i,j,sum=0;
              int num[][]={{30,35,26,32},{33,34,30,29}};     // 声明数组并设置初值

              for(i=0;i<num.length;i++)            // 输出销售量并计算总销售量
              {
                 System.out.print("第 "+(i+1)+" 个人的成绩为:");
                  for(j=0;j<num[i].length;j++)
                  {
                      System.out.print(num[i][j]+" ");
                      sum+=num[i][j];
                  }
                System.out.println();
              }
              System.out.println("\n总成绩是 "+sum+" 分!");
       }
    }
    // 下面程序说明了三维数组的使用方法,要输出数组的内容需要采用三重循环
    public class TestJavasanwei
    {
       public static void main(String args[])
       {
              int i,j,k,sum=0;
              int A[][][]={{{5,1},{6,7}},{{9,4},{8,3}}};      // 声明数组并设置初值
            // 三维数组的输出需要采用三层for循环方式输出
             for(i=0;i<A.length;i++)                    // 输出数组内容并计算总和
                  for(j=0;j<A[i].length;j++)
                      for(k=0;k<A[j].length;k++)
                      {
                           System.out.print("A["+i+"]["+j+"]["+k+"]=");
                           System.out.println(A[i][j][k]);
                           sum+=A[i][j][k];
                       }
            System.out.println("sum="+sum);
       }
    }

《Java从入门到精通》src0-8的更多相关文章

  1. 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

    以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门 ...

  2. 《java从入门到精通》学习记录

    目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...

  3. cucumber java从入门到精通(4)Scenario Outline及数据驱动

    cucumber java从入门到精通(4)Scenario Outline及数据驱动 到目前为止,我们的TodoList类工作良好,不过离我们的预期--任务清单系统还是有不少差距,究其原因不过如下: ...

  4. cucumber java从入门到精通(3)简单实现及断言

    cucumber java从入门到精通(3)简单实现及断言 上一节里我们定义了step的java代码实现文件,step就是测试步骤及断言的集合,我们先定义出来,以后可以驱动开发以及在持续集成时重用. ...

  5. cucumber java从入门到精通(2)用代码定义步骤

    cucumber java从入门到精通(2)用代码定义步骤 上一节里我们定义了feature文件,feature文件就是自然语言描述的用例文件,它有一定的章法,具体的潜规则是: 使用Feature关键 ...

  6. cucumber java从入门到精通(1)初体验

    cucumber java从入门到精通(1)初体验 cucumber在ruby环境下表现让人惊叹,作为BDD框架的先驱,cucumber后来被移植到了多平台,有cucumber-js以及我们今天要介绍 ...

  7. Java从入门到精通一步到位!

    Java作为近几年来非常火的编程语言,转行来做Java的人不计其数,但如今真正的人才仍然匮乏,所以学习Java一定要有一个系统的学习规划课程.阿里云大学帮您规划Java学习路线可以帮助您从一个小白成长 ...

  8. Java从入门到精通——基础篇之JSTL标签

    一.语言基础 EL(Expression Language)表达式,目的:为了使JSP写起来更加简单.提供了在 JSP 中简化表达式的方法. 二.分类 核心标签库:提供条件判断.属性访问.URL处理及 ...

  9. Java从入门到精通——基础篇之Servlet与JSP的区别

    一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...

随机推荐

  1. java --- 对象的创建过程

    java 对象创建的过程 存在了继承关系之后,对象创建过程如下: 1.分配空间.要注意的是,分配空间不光是分配子类的空间,子类对象中包含的父类对象所需要的空间,一样在这一步统一分配.在分配的空间的时候 ...

  2. 平衡二叉树算法实现 c语言版 插入 删除

    #include <stdio.h>#include <malloc.h>#include<stdlib.h> #define EQ(a,b) ((a)==(b)) ...

  3. Week5(10月10日):国庆之后,让我们整装期待元旦吧

    Part I:提问  =========================== 1.要将“Hello, Admin",从控制器传递到视图,该如何操作? (1)使用ViewData (2)使用V ...

  4. VirtualBox虚拟机安装RedHat7.3编译Linux0.01内核

    引子 由于需要编译linux0.01内核,而目前的linux版本太高需要降低gcc版本等等,需要做不少调整非常不方便. 所以,直接安装RedHat7.3,这样就好编译linux0.01的内核了. 但是 ...

  5. ubuntu学习: apt-get命令

    1.apt-get update 更新软件源本地缓存文件 2.apt-cache search 查找软件包,找到想要安装的包,如 sudo apt-cache search mysql-server ...

  6. 基于visual Studio2013解决算法导论之012计数排序

     题目 计数排序 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #in ...

  7. 九度OnlineJudge之1022:游船出租

    题目描述:     现有公园游船租赁处请你编写一个租船管理系统.当游客租船时,管理员输入船号并按下S键,系统开始计时:当游客还船时,管理员输入船号并按下E键,系统结束计时.船号为不超过100的正整数. ...

  8. python 函数形参四种格式

    1:f(a,b) 2:f(a,b=value)有默认值的参数必须在后面 3:f(*a)多个参数直接传进一个元组 4:f(**a)以keys=values 形式给参数,传入转换为字典 def test( ...

  9. java--内部类实现“类的多重继承”

    class Fa1{ private int k = 1; void show() { System.out.println(k); } } class Fa2{ private int k = 10 ...

  10. 知识点1-4:ASP.NET MVC的好处

    ASP.NET MVC解决了ASP.NET Web Form的许多缺点.当在.NET平台上开发新的应用程序时,这使ASP.NET MVC成为一种更好的选择. 1. 对HTML的完全控制 2. 对URL ...