1、方法
main()方法是交给主程序来使用的;
main()方法外面的方法,不能直接使用,需要添加static关键字后,成为类方法,才能进行直接调用;
设计方法的原则:
最好要保持方法的原则性,也就是一个方法只完成一个功能,这样的话方便后期的维护和扩展。
2、main()方法
main()方法是在栈的最底层,涉及到JVM方面的内容;
3、方法组成
方法包含一个方法头和一个方法体,具体包含内容:修饰符、返回值类型、方法名、参数列表、方法体
方法最主要的三要素:
方法名(使用驼峰命名)、返回值类型、参数列表
注意:
1)方法的参数分为:实参、形参
实参:就是调用方法的时候传递的实际参数值,如:test(1,2)
形参:就是在定义方法的时候,括号里面设定的变量参数,用来赋值调用,如:test(int a,int b)
2)方法的返回值类型若有,即为int、String这些,那么要在方法的最后写生return语句,否则会报错;
若没有返回值类型,即为void,那么就不需要写return语句;
4、return的作用
1)返回对应的参数;
2)终止方法的执行;
5、方法调用
Java支持两种方法的调用方式,主要是根据返回值类型来进行判断
1)当有返回值时,方法调用通常被当做一个值,如:int num = max(30,40);
2)当无返回值时,方法调用一定是一条语句,如:System.out.println("Hello world");
6、值传递与引用传递
Java采用的是值传递,基本都是通过方法里面的参数来进行值传递,值传递有一个拷贝的概念;具体会在JVM中涉及
7、方法的重载
在一个类中,方法名相同,形参不同的方法,就叫做方法的重载;
注意:
如果一个方法仅仅是返回值类型不同,那么不足以成为方法的重载。
8、命令行传参
有时候我们想在运行一个程序的时候再传递给它消息,那么就要靠传递命令行参数来给main()方法实现;如:在terminal窗口的命令行输入java Demo01 this is test 那么就能实现,对应的功能
9、可变参数
又叫做不定项参数,就是不确定参数具体有多少个,在指定参数类型的后面加上...符号,如:test(int ...i)
注意:
1)可变参数必须放在参数列表的最后面
2)它是JDK1.5出现的产物
10、调用方法的方式
1)在方法上添加static关键字,成为类方法,然后通过类名.方法名(),调用
2)new 对象,通过对象名.方法名()
11、方法递归 (面试高频)
说白了就是方法自己调用自己,但是如果没有任何考虑和限制条件的话,会报异常,会发生“栈溢出”的问题
递归的结构:包含递归头和递归体两部分;
递归头:就是确定什么时候不调用自身方法,是一个条件,如果没有递归头的话,那么将会陷入死循环;
递归体:就是确定什么时候需要调用自身方法
如:求阶乘 首先需要在开头加一个停止调用自身的条件,if(n == 1) return 1; 然后设置什么时候调用自己,else return n * f(n - 1);
也就是说需要有一个边界条件(官方说法)
前阶段 返回阶段 n * (n - 1)
12、栈(扩展内容)
Java都是使用栈机制的,栈相当于一个罐子,当调用一个方法的时候,就把这个方法压在罐子底部,调用一个往里面压一下,称为压栈,然后当使用完毕的时候,会从最上面依次向下将方法拿出来;
即:后进先出原则
13、接11的递归
所以当遇到一些嵌套层次比较深的算法时,递归可能就不太适用了,可能会发生内存崩溃的问题,因为每嵌套一层,在调用的时候就会扩展一层,会占用内存空间,所以嵌套层次太多的话,就会发生内存崩溃的问题;
也就是说,当递归的深度越大,那么它的时控性就不行了,就会变得很慢,而且会占用大量的内存空间,所以一般情况下,能不用递归就不用递归,当嵌套基数比较小时,可以适当的考虑
我们主要使用的是递归的思想,利用它的思想来解决问题。