美文网首页
Java控制语句

Java控制语句

作者: Automan_mm | 来源:发表于2020-03-19 21:46 被阅读0次

1.控制语句介绍

控制语句:是用来控制程序中各语句执行顺序的语句。

  • 顺序结构
  • 选择结构
  • 循环结构

2.选择结构

  • if单选择结构
  • if-else if-else多选择结构
  • switch结构
double  d = Math.random();  //返回[0, 1)之间的随机数
System.out.println(d);
System.out.println((int)(6*Math.random()+1));  //返回1~6之间的随机整数

int i = (int)(6*Math.random()) + 1;
int j = (int)(6*Math.random()) + 1;
int k = (int)(6*Math.random()) + 1;
int count = i + j + k;

if(count > 15){
    System.out.println("今天手气不错");
}
if(count >= 10 && count <= 15){
    System.out.println("今天手气很一般");
}
if(count < 10){
    System.out.println("今天手气不怎么样");
}
System.out.println("得了" + count + "分");

3.if-else双选择结构

double r = 4*Math.random();
double area = Math.PI*Math.pow(r, 2);
double circle = 2 * Math.PI * r;
System.out.println("半径为:"+r);
System.out.println("面积为:"+area);
System.out.println("周长为:"+circle);

if(area >= circle){
    System.out.println("面积大于等于周长");
}else{
    System.out.println("周长大于面积");
}

4.if-else if-else多选择结构

public class Test5 {
    public static void main(String[] args) {
        int age = (int) (100 * Math.random());
        System.out.print("年龄是" + age + ", 属于");
        if (age < 15) {
            System.out.println("儿童, 喜欢玩!");
        } else if (age < 25) {
            System.out.println("青年, 要学习!");
        } else if (age < 45) {
            System.out.println("中年, 要工作!");
        } else if (age < 65) {
            System.out.println("中老年, 要补钙!");
        } else if (age < 85) {
            System.out.println("老年, 多运动!");
        } else {
            System.out.println("老寿星, 古来稀!");
        }
    }
}

5.switch多选择结构

  • 用来判断多值时很简洁,也可以用if-else代替;
  • 从开始执行,一直到break或switch末尾结束;
  • case标签可以是整数(long类型除外)、枚举类型和字符串。
int mouth = (int)(1+12*Math.random());
System.out.println("月份:"+mouth);

switch(mouth){
case 1:
    System.out.prinln("一月份!过新年了!");
    break;
case 2:
    System.out.println("二月份!开春了!);
    break;
default:
    System.out.prinln(”我是其他月份!);
    break;
}

6.循环结构(while循环)

  • while:先判断,后执行
  • do...while:先执行,后判断(用的少)
//计算1+2+3+...+100,累加求和,5050
//暴力算法!
int i = 1;
int sum = 0;
while(i <= 100){
    sum = sum + i;
    i++;
}
System.out.println(sum);

7.for循环

int sum = 0;
//1.执行初始化语句i=1;2.判断i<=100;3.执行循环体;4.步进迭代:i++;5.回到第二步继续判断。
for(int i = 1; i <=100; i++){
    sum = sum + i;
}
System.out.println(sum);

注:(1)多个初始化语句、判断语句或迭代语句时,使用逗号将多个语句隔开。
(2)for(;;)相当于while(true)。
(3)for循环中的初始化变量的作用域仅限循环体内部。

8.嵌套循环

循环体内部嵌套一个或多个循环。

for(int i = 1; i <= 5; i++){
    for(int j = 1; j <= 5; j++){
        System.out.print(i + "\t");
    }
    System.out.println();
}

for(int n = 1; n <= 9; n++){
    for(int m = 1; m <= n; m++){
        System.out.print(m+"*"+n+"="+(m*n)+"\t");
    }
    System.out.println();
}

int sum01 = 0;
int sum02 = 0;
for(int i = 1; i <= 100; i++){
    if(i%2==0){
        sum02 += i;
    }
    else{
        sum01 += i;
    }
}
System.out.println("奇数和:"+sum01);
System.out.println("偶数和:"+sum01);

int t = 0;
for(int i = 1; i <= 1000; i++){
    if(i % 5 == 0){
        System.out.print(i + “\t”);
        t++;
    }
    if(t == 5){
        System.out.prinln();
        t = 0;
    }
}

9.break和continue语句

  • break:强制退出循环,不执行循环中剩余的语句;
  • continue:终止某一次循环过程,接着进行下一次循环的判定。

10.带标签的break和continue(不常用)

  • goto关键字很早就在程序设计语言中出现。尽管goto仍然是java的保留字,但并未在Java语言中得到正式使用;Java没有goto语句。
  • 标签是指后面带一个冒号的标识符,例如:“label:”。Java中唯一用到标签的地方是在循环语句之前,目的是希望在其中嵌套另一个循环。由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。
//打印101-150之间所有的质数
outer: for(int i = 101; i < 150; i++){
    for(int j = 2; j < i / 2; j++){
        if(i % j == 0){
            continue outer;
        }
    }
    System.out.print(i + "  ");
}

11.语句块和方法

  • 语句块中定义的变量作用域仅限于语句块。
  • 方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。
public class TestMethod {
    public static void main(String[] args) {
        //通过对象调用普通方法
        TestMethod tm = new TestMethod();
        tm.printInf();
        int c = tm.add(30, 40, 50)+1000;
        System.out.println(c);
    }
    
    void printInf() {
        System.out.println("Hello!");
    }
    
    int add(int a, int b, int c) {
        int sum = a+b+c;
        System.out.println(sum);
        return sum;   //reture两个作用:1.结束方法的运行;2.返回值
    }
}

注意:
(1)实参的数目、数据类型和次序必须和所调用的方法声明的形式参数列表匹配;
(2)return语句终止方法的运行并指定要返回的数据;
(3)Java中进行方法调用传递参数时,遵循值传递的原则(传递的是数据的副本);
(4)基本类型传递的是该数据值的copy值,引用类型传递的是该对象引用的copy值,但指向的是同一个对象。

12.方法的重载

  • 重载的方法,实际是完全不同的方法,只是名称相同而已。
  • 构成方法重载的条件:
    (1)形参类型、形参数目、形参顺序不同都可以构成重载;
    (2)参数名称不同,不构成重载;
    (3)只有返回值不同不构成方法的重载。
public class TestOverload {
    public static void main(String[] args) {
        System.out.println(add(3, 5));
        System.out.println(add(3, 5, 10));
        System.out.println(add(3.0, 5));
        System.out.println(add(3, 5.0));
    }
    
    public static int add(int n1, int n2) {
        int sum = n1 + n2;
        return sum;
    }
    
    //方法名相同,参数个数不同,构成重载
    public static int add(int n1, int n2, int n3) {
        int sum = n1 + n2 + n3;
        return sum;
    }
    
    //方法名相同,参数类型不同,构成重载
    public static double add(double n1, int n2) {
        double sum = n1 + n2;
        return sum;
    }
    
    //方法名相同,参数顺序不同,构成重载
    public static double add(int n1, double n2) {
        double sum = n1 + n2;
        return sum;
    }

    /**
    //编译错误,只有返回值不同,不构成方法的重载
    public static double add(int n1, int n2) {
        double sum = n1 + n2;
        return sum;
    }
    
    //编译错误,只有参数名称不同,不构成方法的重载
    public static int add(int n2, int n1) {
        int sum = n1 + n2;
        return sum;
    }
    **/
}

13.递归

  • 递归的基本思想就是“自己调自己”。
  • 递归结构包括两个部分:
    (1)定义递归头:即什么时候不调用自身方法,如果没有头,将陷入死循环,也就是递归的结束条件;
    (2)递归体:即什么时候需要调用自身方法。
  • 递归的缺点:虽然递归程序简单,单递归调用会占用大量的系统堆栈,内存耗用多,比循环慢得多,因此使用递归时要慎重。
  • 任何能用递归解决的问题也能用循环解决,当递归可以更自然地反映问题,且易于理解,同时又不强调效率问题时,可以采用递归;在任何高性能的情况下尽量避免使用递归,因为递归既花时间又耗内存。
public class TestRecursion02 {
    public static void main(String[] args) {
        long d1 = System.currentTimeMillis();
        System.out.printf("%d阶乘的结果:%s\n", 10, factorial(10));
        long d2 = System.currentTimeMillis();
        System.out.printf("递归费时:%s\n", d2-d1);  //29ms
        
        factorialLoop(10);
    }
    
    /**求阶乘的方法*/
    static long factorial(int n) {
        if(n==1) {
            return 1;
        }else {
            return n*factorial(n-1);
        }
    }
    
    static long factorialLoop(int a) {
        long d3 = System.currentTimeMillis();
        long result = 1;
        while(a>1) {
            result *= a;
            a--;
        }
        long d4 = System.currentTimeMillis();
        System.out.printf("%d阶乘的结果:%s\n", 10, result);
        System.out.printf("循环费时:%s\n", d4-d3);  //0ms
        return result;
    }
}

相关文章

  • 控制语句

    Java支持以下控制结构:条件控制语句:if,if - else,if - else if,switch循环语句:...

  • 【骚全带你学Java---八、流程控制语句】

    java的流程控制语句包含条件语句和循环语句 一.什么是流程控制语句? ·流程控制语句:可以控制程序的执行流程。 ...

  • Java核心基础第3篇-Java流程控制

    Java流程控制 本章一起来探讨下Java的流程控制语句。主要从以下几个方面展开: Java分支语句 Java循环...

  • 控制语句

    Java语言中控制语句可以分为7种,①控制选择结构语句 If , If else ,switch ②控制循环结构...

  • Java控制语句

    定义一个程序,想要更加健壮,就必须能够应对各种各样的情况,根据实际情况来判定直接结果,所以,对于程序也应该是根据不...

  • Java 控制语句

    Java 控制语句 ? 本文已归档到:「javacore」? 本文中的示例代码已归档到:「javacore」Jav...

  • Java控制语句

    1.控制语句介绍 控制语句:是用来控制程序中各语句执行顺序的语句。 顺序结构 选择结构 循环结构 2.选择结构 i...

  • 划重点丨详解Java流程控制语句知识点

    摘要:流程控制语句就是用来控制程序中各语句执行的顺序,下面将详细介绍java流程控制语句。 本文分享自华为云社区《...

  • Java编程基础(5)

    Java基础知识-控制流程方法(2):1.foreach 循环语句 2.return 语句 3.break 语句 ...

  • 03 Java流程控制语句

    Java中的控制语句有以下三类: 分支语句:if和switch 循环语句:while、do-while和for 跳...

网友评论

      本文标题:Java控制语句

      本文链接:https://www.haomeiwen.com/subject/ngrcyhtx.html