Java_从入门到JavaEE_06

news/2024/10/18 22:26:41/

一、方法

1.静态方法

  1. 理解:特定功能的代码块

    好处:解决代码的冗余

  2. 语法结构:

    访问修饰符 static 返回值类型 方法名([参数列表]){

    ​ …代码块…

    }

  3. 分类:

    无参数无返回值的方法

    带参数的方法

    带返回值的方法

2.无参数无返回值的方法

  1. 语法结构:

    ​ public static void 方法名(){

    ​ …代码块

    }

  2. 注意:

    1.public是访问修饰符的一种,表示公有的

    2.void表示无返回值(关键字)

    3.方法在类中声明

    4.方法与方法之间是平级关系

    5.方法没被调用,就是个摆设

  3. 实例1:

    java">public class Test{
    public static void main(String[] args){//调用方法//Test01.run();//Test01.run();//Test01.play();//Test01.run();//Test01.play();//Test01.run();//调用方法 ps:只有在同一个类才行run();run();play();run();play();run();}public static void run(){System.out.println("111");}public static void play(){System.out.println("222");}
    }
    

    实例2:用“*”打印三角形(方法版)

    java">public class Test{
    public static void main(String[] args){printStar();
    }
    public static void printStar(){for(int i = 0;i<5;i++){for(int j = 0;j<=i;j++){System.out.print("*");}System.out.println();}
    }
    

3.带参数的方法

  1. 语法结构:

    public static void 方法名(参数列表){

    ​ …代码块…

    }

  2. 注意:

    1. .形式参数/形参:声明方法时规定的参数
    2. 形参必须声明类型
    3. 形参属于该方法的变量,作用域就在该方法内,形参也是局部变量
    4. 局部变量:方法里声明的变量
    5. 实际参数/实参:调用方法时传入的数据
    6. 实参和形参的类型必须兼容
    7. 实参和形参可以有多个,用逗号分割
  3. 案例1:设计一个方法,打印三角形,三角形的行数由调用方传入

    java">public class Test{public static void main(String[] args){printStar(5);}public static void printStar(int num){for(int i = 0;i<num;i++){for(int j = 0;j<=i;j++){System.out.print("*");}System.out.println();}
    } 
    

    案例2:设计一个方法,传入两个int值,输出最大值

    java">public class Test{public static void main(String[] args){getMax(10,20);}public static void getMax(int a,int b){int max=(a>b)?a:b;System.out.println("最大值为:"+ max);}
    } 
    

4.带返回值的方法

  1. 语法结构:

    public static 返回值类型 方法名([参数列表]){

    ​ …代码块…

    return 数据;//1.结束当前方法 2.将数据返回给调用方

    }

  2. 注意:

    1. 带返回值的方法有没有参数要看具体需求
    2. 声明方法时需要设置返回值类型
    3. return后接的是需要返回的具体数据
    4. 方法功能单一性(一个方法的功能不要过于强大)
    5. 方法声明时规定的返回值类型 和 return后的数据 必须兼容
    6. 返回值只能有一个,如果想返回多个值就必须使用数组、集合、…
  3. 案例:设计一个方法,传入两个int值,返回最大值 在控制台输入是三个int值,输出最大值

    java">import java.util.Scanner;
    public class Test{public static void main(String[] args){Scanner scan = new Scanner(System.in);System.out.println("输入第一个数:");int a = scan.nextInt();System.out.println("输入第二个数:");int b = scan.nextInt();System.out.println("输入第三个数:");int c = scan.nextInt();int max=getMax(a,b);max=getMax(max,c);System.out.println("最大值为:"+max);}public static int getMax(int a,int b){int max=(a>b)?a:b;return max;}
    }
    

二、方法的重载

  1. 概念:方法之间的关系

  2. 条件:

    1. 在同一个类中
    2. 方法名必须一致
    3. 参数列表的个数或者类型不一致
    4. 与返回值无关

    好处:系统会根据实参类型自动匹配到对应的方法中

  3. 应用场景:在同一个类中,多个方法功能大概一致,但是细节实现不一致,就可以考虑使用重载

  4. 设计方法的步骤:

    1. 考虑方法名(见名知意)
    2. 考虑形参(几个?类型?)
    3. 考虑返回值(需不需要?返回值类型)

三、方法的递归

  1. 含义:方法调用方法自身

  2. 注意:递归是一种程序设计的思想

  3. 经验:

    1. 找规律:什么情况下方法应该调用方法自身
    2. 找出口:什么情况下应该解决该方法
  4. 案例1:设计一个方法,传入一个int值n,求n的阶乘

    1. 找规律:n!=(n-1)!*n
    2. 找出口:1!=1
    java">public class Test{public static void main(String[] args){int num = getFactorial(5);System.out.println(num);}public static int getFactorial(int n){if(n != 1){return getFactorial(n-1) * n;}else{return 1;}}	
    }
    

    运行逻辑:

    主方法向getFactorial()传入数据“5”

    在getFactorial方法中开始判断

    5!=1 —> 执行getFactorial(5-1) * 5 —> 调用getFactorial(4) … 直到getFactorial(1) —> return 1 (同时释放getFactorial(1)方法) —> getFactorial(1)*2(释放getFactorial(2)方法) … return getFactorial(4) * 5 =120

    打印num。

  5. 案例2:不死神兔问题:有1对兔子,从出生后的第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月有几对兔子,设计一个方法,传入月份,获取当月兔子的对数

    1. 找规律:当月兔子的对数等于上个月+上上个月兔子的对数
    2. 找出口:1月或2月都是1对兔子
    java">import java.util.Scanner;
    public class Test{public static void main(String[] args){Scanner scan=new Scanner(System.in);System.out.println("请输入查询的月份");int month =  scan.nextInt();int sum=getRabbit();System.out.println(month+"月,一共有"+sum+"对兔子");}public static int getRabbit(int month){if(month==1 || month==2){return 1;}else{return getRabbit(month-1)+getRabbit(month-2);}}
    }
    

    扩展:

    不死神兔的数据:1,1,2,3,5,8,13,21…

    这种数列叫做斐波那契数列/黄金分割数列

    该数列相邻两个数的比例越往后越趋近于0.618

四、一维数组

  1. 理解:一组数据的容器

  2. 声明:

    数据类型[] 数组名;

    数据类型 数组名[];

  3. 概念:

    1. 数组是引用数据类型
    2. 数组中的数据也叫做元素
    3. 元素都是编号也叫做下标/索引
    4. 下标从0开始
    5. 数组元素在内存中开辟的空间是连续的
    6. 数组一旦初始化成功,长度不可变(意味着数组不能添加和删除)
  4. 数组的初始化:

    静态初始化:元素由程序员指定,长度由系统分配

    动态初始化:长度由程序员指定,元素由系统分配

    整数类型默认值:0

    浮点类型默认值:0.0

    字符类型默认值:’ ’

    布尔类型默认值:false

    引用类型默认值:null(空)

  5. 静态初始化

    java">public class Test{public static void main(String[] args){//设置静态初始化//1.String[] names =new String[]{"张三","李四","王五","赵六"};//2.String[] names;//  names=new String[]{"张三","李四","王五","赵六"};//3.String[] names={"张三","李四","王五","赵六"};//修改names[1]="小明";String str=names[1];System.out.println(str);//获取下标长度int len=names.lengthlSystem.out.println("长度为:"+len);//遍历1.for(int i=0,i<names.length;i++){System.out.println(names[i]);}//遍历2.for(String element:names){System.out.println(element);}}
    }
    

    遍历使用for与foreach的使用:

    1. 遍历数组时,使用到下标 – for循环
    2. 遍历数组时,不使用到下标 – foreach
  6. 动态初始化

    java">public class Test{public static void main(String[] args){//设置动态初始化//1.String[] names=new String[4];//2.String[] names;names=new String[4];//设置内容names[0]="张三";names[1]="李四";names[2]="王五";names[3]="赵六";String str=names[1];System.out.println(str);//获取下标长度int len=names.lengthlSystem.out.println("长度为:"+len);//遍历1.for(int i=0,i<names.length;i++){System.out.println(names[i]);}//遍历2.for(String element:names){System.out.println(element);}}
    }
    

    在设置 下标上的元素时,如果下标超出开辟的空间数,会报ArrayIndexOutOfBoundsException数组下标越界异常。

  7. 一维数组案例:创建一个int类型的数组,长度由用户指定,数据由用户输入,输入完毕后获取最大值并输出

    java">import java.util.Scanner;
    public class Test{public  static void main(String[] args){Scanner scan= new Scanner(System.in);System.out.println("请输入数组长度:");int[] arr=scan.nextInt();for(int i=0;i<arr.length;i++){System.out.println("请输入第"+i+"个元素:");int num=scan.nextInt();arr{i}=num;}int max=arr[0];for(int i=1;i<arr.length;i++){if(max<arr[i]){max=arr[i];}}System.out.println("最大值为:"+max);}
    }
    

    小结:

    1. 初始化时只知道元素,就使用静态初始化
    2. 初始化时只知道长度,就使用动态初始化
    3. int类型的数组为引用数据类型,数组中的元素是基本数据类型

http://www.ppmy.cn/news/1446881.html

相关文章

EasyDarwin录像存储

目录 1、安装ffmpeg 2、建立录像存储路径 3、修改EasyDarwin配置文件 4、测试 (1)推流&#x

php变量创建和定义规则和常见常量

在 PHP 中&#xff0c;变量是用于存储数据的容器&#xff0c;并且可以根据需要进行更改。以下是 PHP 变量创建和定义的一些基本规则&#xff1a; 变量名以 $ 符号开头&#xff1a;在 PHP 中&#xff0c;所有变量名都以美元符号 $ 开头。例如&#xff0c;$name、$age 等。变量名…

【C++】:类和对象(下)

目录 一&#xff0c;再谈构造函数1.初始化列表2. 隐式类型转换的过程及其优化3. 隐式类型转换的使用4. explcit关键字5. 单参数和多参数构造函数的隐式类型转换 二&#xff0c;static成员1.静态成员变量2.静态成员函数 三&#xff0c;友元3.1 友元函数3.2 友元类 四&#xff0c…

uniapp对uni.request()的封装以及使用

官方文档 uni.request(OBJECT) | uni-app官网 (dcloud.net.cn) uni.request参数 参数名说明url是写api地址的data是用来传值的对于 GET 方法&#xff0c;会将数据 转换为 query string。例如 { name: name, age: 18 } 转换后的结果是 namename&age18。对于 POST 方法且 …

ssm项目后端如何导出war及前端如何导出静态资源

后端如何导出war包 后端工具&#xff1a;IDEA 2020.1.3 运行我们编写工具maven里面的package 运行成功的日志 我们运行完&#xff0c;会生成一个target文件夹&#xff0c;在这个文件夹里面找到war包即可 前端如何导出静态资源 使用工具&#xff1a;WebStorm 2020.1.3 打开左…

程序员商业模式画布

首先&#xff0c;我们来关注价值主张。这个提议的核心理念是减轻那些认为学习是痛苦过程的人的困扰&#xff0c;给他们一点激励&#xff0c;好让他们能够持续、轻松地学习。 我们的目标是通过为学习过程增添乐趣&#xff0c;来缓解那些不太愿意学习的人的痛苦感&#xff0c;从…

AC+AP三层组网实验(华为)

一&#xff0c;技术简介 APAC架构是一种常见的无线局域网&#xff08;WLAN&#xff09;组网方式&#xff0c;主要由接入点&#xff08;Access Point&#xff0c;简称AP&#xff09;和接入控制器&#xff08;Access Controller&#xff0c;简称AC&#xff09;组成。 在APAC架构…

安装Kuboard管理k8s

一、Kuboard 介绍 Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群…