Java_从入门到JavaEE_06

ops/2025/2/21 10:37:40/

一、方法

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/ops/26811.html

相关文章

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时&#xff0c;即使excel中已经设置为文本&#xff0c;读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中&#xff0c;Excel和pandas是数据分析师们不可或缺的得力助手。然而&#xff0c;在使用pandas读取Excel文件时&#xff0c;我们有…

Java面试题:解释Java中的并发工具类ConcurrentHashMap的工作原理,并列举经典应用案例

Java中的ConcurrentHashMap是Java并发包(java.util.concurrent)中的一个线程安全的HashMap实现。它是为高并发场景设计的&#xff0c;能够在多线程环境下提供高效的键值存储和查询操作。以下是ConcurrentHashMap的工作原理和一些经典应用案例的解释。 工作原理 数据结构&#…

Golang Colly实现CSDN内容部分图片爬取

语言:Golang 库:Iris/Colly 日志输出: Received Url: https://blog.csdn.net/smile_sundays/article/details/137207581?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-bl og-classify_tag-4-137207581-null-null.nonecase&dep…

基于springboot+vue+Mysql的漫画网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

全面展示自动驾驶最新发展动态“2024上海国际自动驾驶技术展会”

随着科技的飞速发展和人们生活水平的提高&#xff0c;汽车作为交通工具的角色正在逐渐转变&#xff0c;它已经不仅仅是一个简单的移动工具&#xff0c;而是成为了一种智能设备&#xff0c;融入了我们的生活之中。2024年上海自动驾驶及新能源汽车展会&#xff0c;就是这一变革的…

从0开始的数据结构的书写-------线性表(单链表)

&#xff08;复习考研的休息区&#xff0c;心血来潮&#xff0c;写点代码&#xff09; 三个规则&#xff1a; 1、不使用c stl库进行书写 2、最好基于严蔚敏老师的数据结构 3、最好使用malloc和realloc动态分配内存 &#xff08;如果有问题或者是有没有实现的操作&#xff…

企业私服中使用Maven,标准的setting.xml文件

Maven Maven是一个项目管理和理解工具。它主要服务于以下几个方面: 构建管理:Maven可用于构建和管理任何基于Java平台的项目。 依赖管理:Maven有一个中央仓库,用于保存大量常用的库文件。当进行项目构建时,Maven会自动下载所需的库文件到本地仓库,这极大地简化了库文件…

ps科研常用操作,制作模式图 扣取想要的内容元素photoshop

复制想要copy的图片&#xff0c; 打开ps---file-----new &#xff0c;ctrolv粘贴图片进入ps 选择魔棒工具&#xff0c;点击想要去除的白色区域 然后&#xff0c;cotrol shift i&#xff0c;反选&#xff0c; ctrol shiftj复制&#xff0c;复制成功之后&#xff0c;一定要改…