JAVA基础学习笔记(二)控制语句

发布于 / 程序猿 / 7 条评论

JAVA的控制语句有三种,顺序、选择和循环,与C、C++类似,但是其中的continuebreak语句功能有些区别。


分支语句

JAVA中的分支语句为if-elseswitch-case

if语句

没什么好讲的,但是注意一点:JAVA中if语句的条件表达式与C、C++有所不同,它要求条件表达式的值必须为布尔类型(boolean)!只有truefalse

public class Main
{
    public static void main(String[] args)
    {
        int a = 2;
        int b = 1;
        if (a >= b)
            System.out.println("a >= b");
        else
            System.out.println("a < b");
//        if (a / b) // error
//        if (a / b >= 1) // right
//        if (true or false)
    }
}
// a >= b

这里有一个JAVA小程序,代码贴出来,毕竟后面写的小程序都是仿造这个的。

import java.awt.*;
import java.applet.*;

public class Main extends Applet
{
    Label  lab1, lab2;
    TextField  input1, input2;
    int  num1, num2;

    public void init( ) 
    {
        lab1 = new Label("输入第1个整数");     // 产生第1个标签对象
        input1 = new TextField(10);             // 产生第1个文本框对象
        lab2 = new Label("输入第2个整数");
        input2 = new TextField(10);

        add(lab1);          // 将标签lab1对象放到网页上
        add(input1);        // 将文本框input1对象放到网页上
        add(lab2);
        add(input2);
    }

    public boolean action(Event e , Object o) 
    {
        if (e.target == input1 || e.target == input2) 
        {
            num1 = Integer.parseInt(input1.getText( ));     // 获取文本框中的数值
            num2 = Integer.parseInt(input2.getText( ));

            if(num1 < num2)
                showStatus(num1 + " < " + num2);
            else  if (num1 > num2)
                showStatus(num1+" > "+num2);
            else  
                showStatus(num1+" == "+num2);
        }
        return  true;
    }
}

程序说明

  1. 程序中init()action()均是系统规定的方法名,程序运行时,先执行init()方法,若用户在文本框中按了Enter键,将调用action()方法。主类中定义的lab1和lab2均是标签类型的引用。在init()方法中,产生了4个对象,并把它们放到屏幕上。
  2. 在action()方法中,if(e.target==input1 || e.target==input2)语句用于确定是否在input1input2中按了Enter键。input1.getText( )是获得文本框input1中的文本信息,然后采用系统提供的Integer.parseInt()方法将这个文本转化为一个整数,并传递给遍历num1
  3. showStatus()方法是将其括号中的参数在状态栏输出。
  4. action()方法是boolean类型,所以最后需要返回一个布尔值。

switch语句

没什么好讲的,也没有需要特别关注的地方。switch后面的表达式类型必须是字符类型或整形,case后面的常量不能重复。


循环控制语句

JAVA中的循环控制语句分别为whiledo-whilefor语句。

while语句

没什么好说的,也没有需要特别注意的地方。写一个产生10个100以内随机数的程序。

public class Main
{
    public static void main(String []args)
    {
        int i = 0, x = 0;
        while(i < 10)
        {
            x = (int)(Math.random() * 100);
            System.out.print(x + " ");
            i++;
        }
    }
}
// 10 54 96 90 57 2 9 95 69 53 

程序说明Math.random()方法用于返回一个随机数,随机数范围为0.0 =< Math.random < 1.0

for语句

for循环JAVA中有两种写法,有一种看起来很高级的样子。

  • 一般的for
public class Main
{
    public static void main(String []args)
    {
        int score = 0;
        for (int i = 1; i <= 10; ++i)
        {
            score += 10;
            if (i == 10)
            {
                System.out.println("复习了 " + i + " 小时后,100分是不存在的。");
                break;
            }
            System.out.println("复习了 " + i + " 小时后," + "我的成绩变成了 " + score + " 分。");
        }
    }
}
/*
复习了 1 小时后,我的成绩变成了 10 分。
复习了 2 小时后,我的成绩变成了 20 分。
复习了 3 小时后,我的成绩变成了 30 分。
复习了 4 小时后,我的成绩变成了 40 分。
复习了 5 小时后,我的成绩变成了 50 分。
复习了 6 小时后,我的成绩变成了 60 分。
复习了 7 小时后,我的成绩变成了 70 分。
复习了 8 小时后,我的成绩变成了 80 分。
复习了 9 小时后,我的成绩变成了 90 分。
复习了 10 小时后,100分是不存在的。
*/
  • 不一般的for

Java5 引入了一种主要用于数组的增强型 for 循环。
Java 增强 for 循环语法格式如下:

for(声明语句 : 表达式)
{
   //代码句子
}

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

文字比较难理解,我们来举个例子。

public class Main
{
    public static void main(String []args)
    {
        // array
        int a[] = {10, 20, 30, 40};
        for (int i = 0; i < a.length; ++i)
            System.out.print(a[i] + " ");
        System.out.println();
        for (int x : a)
            System.out.print(x + " ");
        System.out.println();
        // string
        String s[] = {"taifu", "congtsang", "long1", "anhao"};
        for (int i = 0; i < a.length; ++i)
            System.out.print(s[i] + " ");
        System.out.println();
        for (String str : s)
            System.out.print(str + " ");
        System.out.println();
    }
}
/*
10 20 30 40 
10 20 30 40 
taifu congtsang long1 anhao 
taifu congtsang long1 anhao 
*/

输出的结果都相同,这下明白了吗?我们接下来来看一张有趣的图片把。

其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

那要你编写一个程序,为任何一个电话号码生成这段代码,你会吗?——事实上,只要生成最前面两行就可以了,后面内容是不变的。挺简单的,只要稍微考虑一下就好啦,在这里我就不贴代码了。


break语句和continue语句

有了一些新东西,JAVA中分为不带标号的break和continue语句,带标号的break和continue语句。

不带标号的break和continue语句

和C、C++中的一样,就近原则结束循环与跳过直接执行循环更新语句。不举例了。

带标号的break和continue语句

不一样,功能类似于C语言中古老的goto语句。

  • 当在循环中执行带标号的break语句时,可以立即退出任意多个嵌套循环。语法格式: break Identifier
  • 当在循环中执行带标号的continue语句时,可以将控制转移到标号的地方,开始下一轮的循环。语法格式:continue Identifier

下面举例看一下输出的不同。

  • break语句
public class Main
{
    public static void main(String []args)
    {
        int i, j=0;
        outer:
        for(i = 0; i < 3; i++)
            for(j = 0; j < 5; j++)
            {
                System.out.println(i + " " + j);
                if(j == 1)
                    break outer;
            }
        System.out.println("The last value: " + i + " " + j);
    }
}
/*
0 0
0 1
The last value: 0 1
*/
  • continue语句
public class Main
{
    public static void main(String []args)
    {
        int i, j=0;
        outer:
        for(i = 0; i < 3; i++)
            for(j = 0; j < 5; j++)
            {
                System.out.println(i + " " + j);
                if(j == 1)
                    continue outer;
            }
        System.out.println("The last value: " + i + " " + j);
    }
}
/*
0 0
0 1
1 0
1 1
2 0
2 1
The last value: 3 1
*/

注意一下continue和break这两个带标号语句在用法上的区别。

  • continue语句的标号必须位于封闭的循环语句的前面。如下用法就是错误的:
public class Main
{
    public static void main(String []args)
    {
        int i, j;
        outer:
        {
            i = 0;
            for(i = 0; i < 3; i++)
                for(j = 0; j < 3; j++)
                {
                    System.out.println(i + " "+j);
                    if(j == 1)
                        continue outer;
                }
        }
    }
}
// Not a loop label: 'outer`
  • break语句的标号也必须位于封闭语句的前面,但不一定是循环语句。
public class Main
{
    public static void main(String []args)
    {
        int i, j;
        outer:
        {
            i = 0;
            for(i = 0; i < 3; i++)
                for(j = 0; j < 3; j++)
                {
                    System.out.println(i + " "+j);
                    if(j == 1)
                        break outer;
                }
        }
    }
}

JAVA的控制语句学起来也挺容易的,相当于C、C++而言,除了for循环增加了新写法、break与continue语句可加标号之外,没什么新的东西,说实话这些新的东西也不会经常用,毕竟平时写代码的习惯已经养成了。

最后,祝大家愚人节快乐


The end.
2018-04-01 星期日

转载原创文章请注明,转载自: 太傅 » JAVA基础学习笔记(二)控制语句
  1. TaiFu_S

    doge1 最最最基础的部分已经学完了,下次就要走进类了!

  2. 哈哈

    doge,大佬

    1. TaiFu_S
      @哈哈

      二哈

  3. RYAN0UP

    大佬绿帽

    1. TaiFu_S
      @RYAN0UP

      二哈 24K纯渣

  4. 123

    博主怎么突然学Java了

    1. TaiFu_S
      @123

      这学期的专业课呀 doge5