Java 方法特质学习笔记(基础)

介绍

Java方法是语句的集合、是语句的捆绑/统一,它们在一起只为执行一个功能、完成一个目的。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

目录

a. 方法的命名规范

b. 方法的定义

c. 方法的调用

方法的重载 Overload(看方法头)

方法的重写 Override(看方法体)


a. 方法的命名规范

  1. 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。
  2. 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test_<state(状态)>,例如:testPop_emptyStack。

b. 方法的定义

修饰符 返回符 方法名(参数列表) {//方法头
    ...
//方法体
    return 返回值;//如果是 void 返回符,则可以省略 return 项
}
//返回符又叫返回数据类型

c. 方法的调用

按是否为 void 返回符来分类
void 返回符的方法非 void 返回符的方法
调用方法时的程序控制权仍然在程序手中交给了被调用的方法手里,当结束调用后再返还给程序
等同性质一条语句通常被当作一个值

方法内定义的和参数列表里的参数就属于形参,方法外定义的和非参数列表里的参数就属于实参

我认为它们俩本质的区别在于作用域的大小:形参 < 实参。比方说我是“湖南彭于晏”,而真正的彭于晏是“国服彭于晏”,我们俩各在自己的天地生活,只不过他的天地比我大罢了。

形参的作用域:方法里                实参的作用域:类里

方法的重载 Overload(看方法头)

直接上代码!同名的方法只根据参数类型、数量的不同来选择具体的调用。(不过跟参数名本身无关)

public class compareNum {
    public static void main(String[] args) {
        compareNum.min(10, 20);//整数默认 int
        compareNum.min(1.3, 2.3);//小数默认 double
    }
    public static int min(int a, int b) {
        if (a > b) {
            return b;
        }else
            return a;
    }
    public static double min(double a, double b) {
        if (a > b) {
            return b;
        }else
            return a;
    }
} 

方法的重写 Override(看方法体)

同名的方法只根据其使用对象类型(运行类型/实例类型)的不同来选择具体的调用。

public class WatchTikTok {
    public static void main(String[] args) {
        Object o = new Son();//传入的是 Son 实例
        o.watchVideo();
    }
}
class Father {
    public void watchVideo() {
        System.out.println("看一笑倾城中...");
    }
}
class Son extands Father {
    public void watchVideo() {
        System.out.println("看井川鲤鱼中...");
    }
}

Overload 和 Override 的区别表格
OverloadOverride
重载(Overload) 重写(Override) 与类关系

针对于一个类而言

(同类之中) 

存在于父类和子类之间

(不同类间)

无关要素方法的异常类型及其数目private 方法(充其量是子类中新定义了一个方法,并没有进行重写)
不允许的情况
  1. 只有返回类型不同的方法不能进行重载
  2. 不能通过方法的访问权限、返回类型、抛出异常来进行重载
  1. final 方法不能重写
  2. 子类重写方法不能抛出比其父类方法更多的异常(但子类方法可选不抛出异常)

递归方法

简单来说,递归就是方法自己调用自己,每次调用时传入不同的变量,“用方法做个while循环”(像榨汁机把自己榨出来的果汁,再放入自己身体里面再榨一遍!)。递归有助于编程者解决复杂问题,同时可以让代码变得简洁。(但是比较消耗资源,容易爆栈

好了废话少说,直接上代码!以下是递归的例子:

public class Recursion_Test {
    public static void main(String[] args) {
        Cursion cursion1 = new Cursion();
        cursion1.test(5);
        System.out.println("递归方法执行了"+cursion1.count+"次");
    }
}
class Cursion{
    int count;
    public void test(int n){

        if (n > 2){
            test(n - 1);
            count++;
        }
        System.out.println("n = "+n);
/*每次递归都会执行一次完整的方法:
当遇到调用方法时则会压入一个新栈帧,
直到递归操作完毕时就会依次出栈并且执行后面的语句(如果有的话)*/
//打比方:“先入后出”的羽毛球之筒!
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值