java方法重载的意义_三、java基础-方法含义_重载_递归

1、java中方法:

方法的含义:

就是一个代码片段,可以完后某个特定的功能,可以重复利用;

定义方法的语法:

[方法的修饰符列表]   方法的返回值类型   方法名{

java语句;

}

注意:[]括号里面的可以有也可以没有,但是不在[]里面的一定的有。

1)[方法的修饰符列表]是可选项,现在暂时先写成:public static

2)方法的返回值类型,可以是java语言中的任何一种数据类型,包括基本数据类型和引用数据类型。

3)如果方法执行结束之后,并没有任何返回值,那么定义方法的时候,返回值类型写:void

4)方法名只要是合法的标识符即可

5)方法的形式参数列表,可以有参数,也可以没有参数,如果有多个参数的话使用"逗号"隔开。

备注:如果一个方法的返回值类型不是void,那么在方法中必须使用return 语句来返回数据,否则编译无法通过。return语句一定执行,方法结束。

2、方法的重载

1)同一个类中,

2)方法名相同

3)参数列表不同。(类型不同、个数不同、顺序不同)

4)和返回值类型无关

5)和方法的修饰符列表无关

方法的重载:1)可以使代码变的美观;2)程序只需记忆很少的方法名,方便调用;

3、方法的执行原理:

1)方法在调用的时候,才会给该方法在内存中分配空间。如果这个方法只是定义没有调用,则不会在内存中分配空间。

2)方法在调用的时候在“栈”中分配空间,(jvm内存中有一块内存是栈内存)方法调用其实就是“压栈”意味着方法调用;

3)方法结束其实就是“弹栈”,意味着方法结束。最后一个弹的肯定是最先进去的。

4、方法的递归

方法的递归:就是方法自身调用自身。

递归因为没有结束的条件,所以一直压栈,而没有弹栈,导致内存溢出错误。所以递归必须要有结束条件。

备注:递归每使用一次就会发生一次压栈,但是不适用递归的该例子只发生了一次压栈,所以不使用递归能完成的就不使用递归,递归的运行效率不是很高。但是有些时候是必须使用递归的:让你做一个程序,查询文件夹里面有哪些文件

不使用递归求1到N的和

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public static voidmain(String[] args) {//计算1-N的求和

int reValue=method1(10);

System.out.println(reValue);

}public static int method1(intn){int sum=0;for(int i=0;i<=n;i++){

sum+=i;

}returnsum;

}

View Code

使用递归求n的和

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

public static voidmain(String[] args) {int reValue=method2(10);

System.out.println(reValue);

}public static int method2(intn){if(n==1){return 1;

}return n+method2(n-1);

}

View Code

使用递归实现文件的复制

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;/*使用递归复制某个目录下所有的子目录和子文件*/

public classFileInputStreamTest05 {public static voidmain(String[] args) {

File f=new File("E:/工作资料/入职必学/移动平台知识");

method(f);

}public static voidmethod(File f){//如果是文件则拷贝

if(f.isFile()){

String filePath=f.getAbsolutePath();

String newFilePath="D"+filePath.substring(1);

File parentFile=newFile(newFilePath).getParentFile();//如果父路径文件不存在则创建

if(!parentFile.exists()){

parentFile.mkdirs();

}

FileInputStream fis=null;

FileOutputStream fos=null;try{

fis=newFileInputStream(filePath);

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}try{

fos=newFileOutputStream(newFilePath);

}catch(FileNotFoundException e) {//TODO Auto-generated catch block

e.printStackTrace();

}//复制

byte[] bytes=new byte[102400];int temp=0;try{while((temp=fis.read(bytes))!=-1){

fos.write(bytes,0, temp);

}

fos.flush();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{if(fis!=null){try{

fis.close();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}if(fos!=null){try{

fis.close();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}else{//如是目录

File[] fs=f.listFiles();for(File subFile:fs){

method(subFile);

}

}

}

}

View Code

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值