既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
前言
今天咱们讲讲Java中的函数也就是方法!!!
对了!给大家推荐一个刷题学习、面试神器——牛客网
里面有非常多的题库,跟面试经验~非常的良心!!
一、方法的基本用法
1.1 什么是方法(method)
方法就是一个代码片段. 类似于 C 语言中的 “函数”。方法可以把它理解为一个功能,这个功能是可以重复使用的。
方法存在的意义:
- 是能够模块化的组织代码(当代码规模比较复杂的时候).
- 做到代码被重复使用,一份代码可以在多个位置使用.
- 让代码更好理解更简单.
- 直接调用现有方法开发,不必重复造轮子.
1.2 方法定义语法
目前来说写任何方法的时候都写成:
pubiic static 返回值 返回名称(形式参数列表){
函数体/方法体
}
代码举例:实现一个方法实现两个整数相加
public class Test {
public static void main(String[] args) {
int a = 10;
int b= 20;
int ret = add(a,b);
System.out.println("ret = " + ret);
}
public static int add (int x,int y) {
return x + y;
}
}
函数返回值的链式调用:
还是按照上面的例子给大家举例一下:
public class Test {
public static void main(String[] args) {
int a = 10;
int b= 20;
System.out.println("ret = " + add(a,b)\*2);
}
public static int add (int x,int y) {
return x + y;
}
}
在Java里面没有函数声明,不管你的函数在main函数的上面还是在下面,都可以调用
注意事项
1 . public 和 static 两个关键字在此处具有特定含义, 我们暂时不讨论, 后面会详细介绍.
2. 方法定义时, 参数可以没有. 每个参数要指定类型
3. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void
4. 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”.
5. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.
6. Java 中没有 “函数声明” 这样的概念.
1.3 方法的开辟
函数开辟内存空间叫做函数栈帧,每个函数调用的时候都会开辟栈帧,属于这个函数的内存
函数在内存空间是如何调用的:
举例:用函数的方法求n的阶乘之和
//用函数的方法求n的阶乘之和
public static int Fac(int n) {
int sum = 1;
for (int i = 1; i <= n; i++) {
sum = sum \* i;
}
return sum;
}
/\*\*
\* 求n的阶乘之和
\* @param
\*/
public static int facSum(int n){
int ret = 0;
for (int i = 1;i <= n; i++){
ret = ret + Fac(i);
}
return ret;
}
public static void main(String[] args) {
System.out.println(facSum(5));
}
}
//1.Java无法通过传地址的方式交换两个值的变量,后续会讲怎么做
public class TestDemo {
public static void swap(int a,int b){//交换两个变量的值
int tmp = a;
a = b;
b = tmp;
}
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println("交换实参前:"+a+" " +b);
swap(&a,b);//Java是做不到取地址的,如果想要写一个函数交换两个数的的值,只能把a和b的值放到堆上
System.out.println("交换实参后:"+a+" " +b);
}
}
二、方法的重载
有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载.
2.1 重载要解决的问题
那么是不是应该创建这样的代码呢?
由于参数类型不匹配, 所以不能直接使用现有的 add 方法.
这样的写法是对的(例如 Go 语言就是这么做的), 但是 Java 认为 addInt 这样的名字不友好, 不如直接就叫 add
2.2 重载的规则
方法名相同
方法的参数不同(参数个数或者参数类型)
方法的返回值类型不影响重载.
当两个方法的名字相同, 参数也相同, 但是返回值不同的时候, 不构成重载.
三、方法的使用
例题:用函数方式编写代码模拟三次登录场景
public static void login(){
int count = 3;
Scanner scanner = new Scanner(System.in);
while(count != 0){
System.out.println("请输入你的密码");
String password = scanner.nextLine();
if(password.equals("123456")){//equals的返回值是true或者false
System.out.println("登录成功了");
break;
}else{
count--;
System.out.println("你输错密码了,你还有"+count+"次机会");
![img](https://img-blog.csdnimg.cn/img_convert/b6ba33406fb196024e465be54d858fc5.png)
![img](https://img-blog.csdnimg.cn/img_convert/96457e19f33a945c57e2d789004e4e62.png)
![img](https://img-blog.csdnimg.cn/img_convert/8e0431bde85d3963c89fbc5914be6b8d.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
715004151290)]
[外链图片转存中...(img-JNsVLWiI-1715004151291)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**