栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java之逻辑控制+方法的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java之逻辑控制+方法的使用

java之逻辑控制+方法的使用
  • 顺序结构⏰

    代码一行一行写,执行也是一行一行从上往下去执行,这就是所谓的顺序结构。

  • 分支结构

  1. if语句:

    形式一:

    if(布尔表达式){
        内容;
    }
    

    形式二:

    if(布尔表达式){
        ;
    }else{
        ;
    }
    

    形式三:

    if(布尔表达式1){
        ;
    }else if(布尔表达式2){
        ;
    }else{
        ;
    }
    

    悬垂else问题:ele总与最接近的if相匹配(不加大括号的时候)

  2. Switch语句

    switch(整数|枚举|字符|字符串){
            case 内容1:
                内容满足时要执行的语句;
                break;
            case 内容2:
                内容满足时要执行的语句;
                break;
            ...;
            default:
                语句;
                break;      
    }
    
    

    break最好不要遗漏,否则失去多分支选择的效果

  • 循环结构

    1. while循环
    while(循环条件){//循环条件为true则执行语句,否则不执行
        循环语句;
    }
    
    • 注意事项:
      1. while的语句体不加大括号,循环条件满足只能管一条
      2. 与if类似,while后面的{与while写在同一行
      3. 与if类似,while后面不要加封号,否则循环不可正确执行
    • break:跳出最近的循环
    • continue:跳出本次循环continue一下的代码,转而去执行下一次循环。

    2.for循环

    for(表达式1;表达式2;表达式3){//1为初始化部分;2为判断部分;3为调整部分
        循环体;
    }
    

    3.do while循环

    do{
        循环语句;
    }while(循环条件);
    

    至少执行一次

  • java的输出

    System.out.println(msg);//输出一个字符串,并换行
    System.out.print(msg);//输出一个字符串,不换行
    System.out.printf(format,msg);//同C
    
  • 从键盘输入礪

    第一步:导入包:import java.util.Scanner;//封号别忘记了

    第二步:为从键盘读入作准备:Scanner scan=new Scanner(System.in);

    第三步:开始读取:如int a=scan.nextInt();等

  • 使用Scanner循环读取N个数字

Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
    ;
}
  • 猜数字游戏
import java.util.Scanner;//导入包:Scanner
import java.util.Random;//导入包:Random
public class TestDemo{
    public static void menu(){
        System.out.println("*********************");
        System.out.println("*******0.Exit********");
        System.out.println("*******1.Play********");
        System.out.println("*********************");
    }
    public static void game(){
        Random random=new Random(System.in);
        int rand=random.nextInt(100)+1;//[1,100]
        while(true){
            int x=scan.nextInt();
            if(x>rand){
                System.out.println("猜大了")
            }else if(x 

  • 一些值得注意的点⚙️
  1. 用scanner从键盘读入数据若是既有字符串的读取又有整数的读取,建议先字符串后整数,否则易出bug,这也是java读取时的弊端之一。

  2. 导包其实是在打开java中的一个资源,类似C中的头文件;最后结束读取时,可以加上一句:

    scanner.close();

  3. java中的switch语句中:switch后面括号内的东西只能是整数|枚举|字符|字符串

  4. java中的for循环判断部分省略也是默认为真。


方法的使用(类似于C中的函数)
  • 基本使用
//方法的定义
public static 方法返回值类型 方法名称(形参1,形参2,...){
    方法体;
    return 返回值;//返回值类型为非void
}
  • 方法调用的执行过程

    1. 与C一样,只有调用一个方法的时候,方法的代码才会被执行
    2. 方法被调用时,视情况看是否传实参,有时候无形参就不用传实参了
    3. return后返回主函数(main函数)
    4. 一个方法可以被多次调用
  • 方法调用时的注意事项

    1. 跟C一样要注意是传值还是传址,当然java中没有地址一说,在java中叫引用,说法是:一个引用指向一个对象。一般地:引用存在JVM虚拟机栈内,而对象存在堆内,函数调用结束,JVM虚拟机栈的方法所占据的内存被回收,但是堆内的东西还在,所以说一句话:在JAVA中返回一个指向对象的引用没事!,不像C中,不可以返回局部变量的地址!
    2. 对于基础类型来说:形参相当于实参的临时拷贝,即传值调用,对形参的修改不会影响到实参哦。
  • 方法的重载(同一个方法名,提供不同版本的实现

    就是说:在C中一个函数的形参类型定死了,那调用这个函数的时候,传过来的实参的类型也必须与之相匹配,否则就掉用不了。而换一个数据类型,想实现相同的功能时,就得重新再编一个函数。在java中,我们可以用相同的函数名,仅修改形参的类型,就可以做到重载,实现上述的目的。注意:返回值是什么类型,不影响重载与否。如:

    public static void main(String[] args){
        int a=10;
        int b=20;
        double c=1.1;
        double d=1.2;
        int sum1=add(a,b);
        double sum2=add(c,d);
        System.out.println(sum1);
        System.out.println(sum2);
    }
    public static int add(int x,int y){
        return x+y;
    }
    public static double add(double x,double y){
        return x+y;
    }
    

    重载的规则

    1. 方法名相同
    2. 方法的参数不同(参数个数或者参数类型至少一个)
    3. 方法的返回值类型不影响重载

  • 方法的递归

    “我调我自己”

    案例:

    1. 打印一个数字的每一位
public static void print(int x){
    if(x>9){
        print(x/10);
    }
    System.out.print(x%10);
}

​ 2.递归实现1+2+3+…+10

public static int sum(int x){
    if(x>1){
        return x+sum(x-1);
    }
    return x;
}

​ 3.递归实现方法:输入一个非负整数,返回组成它的数字之和,例如:输入1729,则返回1+7+2+9,其和为19.

public static int sum(int x){
    if(x>9){
        return x%10+sum(x/10);
    }
    return x;
}

4.求斐波那契数列第n项

public static int fib(int x){
    if(x<=2){
        return 1;
    }else{
        return fib(x-1)+fib(x-2);
    }   
}//该方法重复计算特别多,效率极低,以下再说一遍个递归的方法
public static int fib(int x){
    int f1=1;
    int f2=1;
    int f3=0;
    for(int i=3;i<=x;i++){
        f3=f1+f2;
        f1=f2;
        f2=f3;        
    }
    return f3;
}

递归小结

  1. 有些问题天然就是要使用递归(如斐波那契数列、二叉树等),此时使用递归求解就比较容易
  2. 有些问题使用递归和非递归都可以解决,那么此时更推荐使用迭代,相比于递归,非递归更加高效。

小总结

  1. java中的开根号:Math.sqrt(数字),直接用不用导包
  2. 一个函数的返回值给其他函数使用,这叫链式访问
  3. java中的方法或者说函数,定义在主函数前面或者后面都是可以的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号