三、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的和
public static void main(String[] args) {
//计算1-N的求和
int reValue=method1(10);
System.out.println(reValue);
}
public static int method1(int n){
int sum=0;
for(int i=0;i<=n;i++){
sum+=i;
}
return sum;
}
使用递归求n的和
public static void main(String[] args) {
int reValue=method2(10);
System.out.println(reValue);
}
public static int method2(int n){
if(n==1){
return 1;
}
return n+method2(n-1);
}
使用递归实现文件的复制
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; /*
使用递归复制某个目录下所有的子目录和子文件
*/
public class FileInputStreamTest05 {
public static void main(String[] args) {
File f=new File("E:/工作资料/入职必学/移动平台知识");
method(f);
}
public static void method(File f){
//如果是文件则拷贝
if(f.isFile()){
String filePath=f.getAbsolutePath();
String newFilePath="D"+filePath.substring(1);
File parentFile=new File(newFilePath).getParentFile();
//如果父路径文件不存在则创建
if(!parentFile.exists()){
parentFile.mkdirs();
}
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(filePath);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fos=new FileOutputStream(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);
}
}
}
}
三、java基础-方法含义_重载_递归的更多相关文章
- Java基础-方法(method)的应用
Java基础-方法(method)的应用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 方法就是定义在类中,具有特定功能的一段小程序,方法也称为函数(function),方法可以接 ...
- Java基础——方法的调用
Java基础--方法的调用 总结: 1. 在同一个类中-- 对于静态方法,其他的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...
- 《Java基础——方法的调用》
Java基础--方法的调用 总结: 1. 在同一个类中-- 对于静态方法,其它的静态和非静态方法都可以直接通过"方法名"或者"类名.方法名"调用它. 对 ...
- Java基础-方法重载和方法重写的区别
什么是java方法重载 (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) ...
- java基础—方法重载(overload)
一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法 ...
- java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列
1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...
- 【Java基础】【08面向对象_继承&方法&final】
08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...
- 【Java基础】【09面向对象_多态&抽象类&接口】
09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案 ...
- JAVA基础学习之路(二)方法定义,重载,递归
一,方法的定义: package test; public class test1 { public static void main(String args[]) { int result = ad ...
随机推荐
- JIT对锁的优化- 锁消除和锁粗化案例分析
锁消除和锁粗化案例分析 锁消除 直接上代码 /** * 描述: 锁粒度演示 * @author karl * @create 2020-02-11 14:38 */ public class MySy ...
- 服务器(1)——IIS(1)——Windows7中IIS简单安装与配置(详细图解)
最近工作需要IIS,自己的电脑又是Windows7系统,找了下安装的方法,已经安装成功. 一.首先是安装IIS.打开控制面板,找到“程序与功能”,点进去 二.点击左侧“打开或关闭Windows功能” ...
- cf 908B
B - New Year and Buggy Bot 思路:刚开始看到这个题的时候,一头雾水,也不知道要干什么,后来百度翻译了了一遍,看明白了,不得不说自己的英语太差了,好了,步入正题: 给你n行m列 ...
- 洛谷P1908 逆序对(线段树解法)
题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定 ...
- RFID学习
RFID:射频识别卡有读卡器和电子标签(有源/无源/半有源)组成,工作频率有LF/HF/UHF/MF,低频的通讯距离近(1m)常用来做门禁:高频的通讯距离远可以批量读取. 无源的轻巧/防拆一致性好,在 ...
- POJ 1064 Cable master(二分答案)
嗯... 题目链接:http://poj.org/problem?id=1064 其实这是一道很好想的二分答案的一道题... 二分的区间就是1~max_l,从1开始是因为所有小于1的都需要按0计算,没 ...
- WPF TreeGrid Binding 简易实现方式
在設計TreeView編輯狀況下,希望 TreeItemName 后续的编辑框 复选框 可以整齐排列. 参考微软提供的TREELISTVIEW,发现它是根据层级关系调整Margin 属性. 我这边按照 ...
- hbase入门-相关概念
hbase入门-概念理解 参考文档: https://blog.csdn.net/luanpeng825485697/article/details/80319552 1. hbase概念 ...
- [转]Java监听器的原理与实现
原文链接 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序专门用 ...
- MySQL之可视化软件
MySQL可视化客户端 多款可视化界面,总有一款适合你 个人推荐使用MySQL官方提供的可视化工具. 下载链接 使用方法链接