今天主要讲的是java中方法以及函数的参数的传递,具体有方法的重载和覆载、值的传递。
一、方法
方法,也称为函数,是一个独立的实现功能的代码块,定义在类的结构体中【也就是类中定义】。
- 作用:完成功能,数据的处理!方法可以拿来反复使用。每次使用都是独立的
例如:main主方法
结构:
权限修饰符 静态修饰符 返回类型 方法名(参数){
功能代码块
(void 可以不写)Return返回值
}
public static void main(String[] args){
}
- 注意事项:
- 对于方法的使用者而言,无需关心方法内部的实现
- 同一个类中:静态方法不能调用非静态的方法
- 同一个类中:非静态方法可以调用静态方法[ 自己读 测试]
- 在类中定义的方法名和参数不能同时相同,不然就报错:该类已经定义了这个方法(在这有些人是方法签名)
- 权限修饰符和静态修饰符可以不写,但其他的必须写【默认:权限修饰符:default 非静态】
(静态修饰符、权限修饰符不理解的话,建议百度一下)
- 严格按照返回值类型进行编写代码
(void 没有返回值【注:抽象类、接口都是没有返回值的】)
- 参数
方法中定义的参数:参数类型 参数名称
①参数类型:
基础数据类型(8) + 引用数据类型(类/接口/枚举。。。)
(注:参数类型可以拿来做返回值类型)
基础数据类型:int char byte short boolean float double long
引用数据类型:如String、自定义类... 等等
②参数名称:
除了不能用数字、非法字符,随便取
(建议:见名知意(以英文来,除首字母后续的单词首字母大写)
【因为可以百度翻译】)
参数是一个局部变量,可以在方法的功能代码块中调用和赋值,但是不能在类外使用
③方法参数的传递
值传递
1.方法的参数传递
使用一个方法的时候,传递数据
1.基本数据类型:传递的是值的本身
2.引用数据类型:传递的是一个引用地址
值引用
1.值引用:
一个方法,传递引用类型数据
例如:
int[] arr = new int[];
使用如下方法
print(arr);//传递的是arr持有的该数组的引用地址
public static void print(int[] arr){
}
接下来:
- JVM内存分析:
从上面图中可以看出:在我们定义的变量或者参数中
栈:存放变量名(参数名也存放在这里),是一小部分缓冲内存区,引用数据类型的变量,存放的是地址值【比如int i = 10 ; 这里放的是 i 】
堆:存放实际意义的值【这里放的是 10 】
在使用完了以后,计算机内存就会释放掉
- 重载和覆写
-
- 重载:除方法名相同,参数不同外,其他都可以相同也可以不同
-
在实现某一个功能时,拥有多种情况的实现方式,可以通过方法重载进行实现
-
-
- 覆写:在自定义子类中,父类不满足子类的需求或者接口继承的方法,是可以重新写这个方法的,要求方法名、参数、权限修饰符都要一致(除功能代码外都一致)
-
@Override : 验证是否覆写 (自动覆写方法的时候自动生成)
比如:
Class A{//重载例子
Public void B(int a , int b){
功能代码
}
Public void B(int a , String b){
功能代码
}
}
Class C extends A{//覆写A中的B 方法
Public void B(int a , int b){
功能代码
}
}
使用时:C的对象调用下面的方法时
B(4,6);//调用的自身的B方法
B(4,“w”);//调用的父类的A 的B的方法(标红的)
注:当调用时,先从对象的类(如C的对象去C类)中去找参数和方法去找是哪个方法,如果没有,看父类有没有,没有报错,有就调用;当都有的时候,调用的是C的
【仔细看参数类型,参数名不一样是可以的】
讲到这里,就差不多了,继续往下走。。。。。
(有问题可以评论区)