文章目录
- 函数 定义形式:
- java中如何定义函数
- 函数调用:
- 函数重载(overload):
- 递归(recursion):
- Math:
- 随机数:
- String字符串对象:
函数 定义形式:
函数返回值类型 函数名(形参列表)
{
函数体;
return 返回值;
}
1:函数返回值类型:即一个数据类型,可以为int,float,double,char,bool等等,需注意,当函数返回值类型为void时,函数没有返回值。
2:函数名称,命名规则同变量名命名规则,是自定义的,尽量取有意义的函数名称。例,求最大值的函数可以命名为max, 起搜索作用的函数可以命名为search,等等。因为当一个程序较大时,各个函数如果只是简单的a,b,c,会很容易混淆。
3:形参列表,可以将其简单理解为函数 f(x)=ax^2+bx+c(a,b,c为常数),中的x, 既然为列表,则可以有多个传入值,既可以理解为f(x,y,z)=ax+by+c*z+d(a,b,c,d为常数)中的“x,y,z”;当然个数没有限制,亦可以没有传入值,此时可以通过对全局变量的操作来实现函数的功能。具体用法为(数据类型 变量名,数据类型 变量名,数据类型 变量名)。
4:函数体,即对形式参数或全局变量进行操作的一段代码。
5:返回值,一个函数可以有多个return ,但最多只有一个返回值。
java中如何定义函数
访问修饰符 函数返回值的类型|void 函数名称([参数列表]) {
// 函数体
// return 返回值;
}
Fibonaci序列:
public class Fibonaci {
public static void main(String[] args) {
System.out.println(getFibonaci(10));
}
public static int getFibonaci(int n){
if(n==1||n==2){
return 1;
}
return getFibonaci(n-1)+getFibonaci(n-2);
}
}
java中函数是属于类的!!必须定义在类中!!!所以说函数是类成员
先把函数都定义静态函数,等学习了面向对象,再定义常规函数!!
java中:静态方法没有办法直接调用非静态方法!!!只能调用静态方法
函数调用:
函数是无法自己执行的!!!必须通过调用才可以执行!!!
函数名称([参数列表]);
函数的分类:
有没有参数:
- 有参函数
- 无参函数
有没有返回值:
- 有返回值的函数
- 无返回值的参数
定义者:
- 系统函数
- 第三者
- 自定义函数
局部变量:
局部变量(本地变量):定义在函数中的变量叫做局部变量
函数在内存的调用的本质:
栈:
队列:
执行栈:
函数怎么调用
局部变量
函数重载(overload):
什么是函数重载
函数名称相同,函数的参数的个数或者类型不同,调用的时候,自动匹配对应的函数
面试题:
请简述overload(函数重载)、override(覆盖)、overwrite(重写)
思考:
函数重载所有编程语言都有的吗?
函数重载现象是强数据类型语言(java、C、C++、C#)所特有的现象
弱数据类型语言(javascript、python、ruby)是不具备函数重载
递归(recursion):
什么叫做递归:函数自身调用自身
递归时的内存模型:
优点:分治理念的体现,可以把非常复杂的问题,简单解决
缺点:非常耗费内存,所以说,当栈被全部占用后,触发StackOverflowError异常!!!
**注意,可以使用java -X -Xss 大小, 来调整JVM的栈大小空间
-Xms<大小> 设置初始 Java 堆大小
-Xmx<大小> 设置最大 Java 堆大小**
上楼梯问题:
import java.util.Scanner;
public class Upstairs {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你所要的台阶层数:");
int n = sc.nextInt();
f(n);
System.out.println("共有"+f(n)+"种方法!");
}
public static int f(int n){
if (n<=0){
return 0;
}else if(n==1){
return 1;
}else if (n==2){
return 2;
}else{
return f(n-1)+f(n-2);
}
}
}
Math:
Math类,是JDK内置的类,java.lang.Math
java.lang:这个包,是默认导入的包
随机数:
Math.random()
Random类
java.util.Random
String字符串对象:
在java中,被双引号,引主的内容就叫做字符串
字符串在java中不是基本数据,是对象,引用数据类型。
final修饰的,字符串是常量,它们的值不能被创建后改变。支持可变字符串字符串缓冲区。
因为字符串对象是不可改变的,所以它们可以被共享。