成员方法
知识迁移:类比 C 语言中的函数,方法(可以理解为一个类具有某种行为),刚好可以通过写一个函数的方法实现,在 Java 中称为方法
有什么作用?
可以更方便的调用某些功能,避免代码冗余,例如可以写一个mytool类,把需要的功能全部写在类方法中(封装起来),需要的时候直接调用,非常方便
快速入门
public class method{
public static void main(String[] args){
person person1 = new person();
person1.name = "jackson";
person1.age = 18;
int a = 10;
int b = 10;
int[] arr = {1,2,3};
int sum = person1.getsum(a,b);
person1.printarray(arr);
System.out.println("age: " + person1.age);
System.out.println("name: " + person1.name);
System.out.println("person object ---> getsum method result: " + sum);
}
}
class person{
String name;
int age;
public int getsum(int a,int b){
return a + b;
}
public void printarray(int[] arr){
for(int i =0; i < arr.length; i++){
System.out.print("arr[" + i + "]: " + arr[i] + " ; ");
}
System.out.println();
}
}
代码分析
一、方法的解读
-
(1)public表示公开的
-
(2)void表示没有返回值,这里可以根据返回的数据类型而改变
-
(3)getnum和printarray都是方法名
-
(4)方法中可以传参(称之为形参),也可以不传
-
(5)return返回值可有可无
二、方法的使用
调用方法:对象.方法(),()是形参列表
-
(1)如果有返回值,可以用返回值的数据类型的一个变量进行接收
-
(2)支持兼容类型(自动类型转换),例如:把int赋值给double
跨类调用方法
-
(1)使用new创建一个对象,使用对象.方法名()的方式调用
-
(2)注意:只能在类方法里实现跨类调用方法,否则会报错
-
(3)与访问修饰符有关(public,protected,private,默认),后续详谈,这里先提一下
跨类调用代码示例
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
person person1 = new person();
person1.name = "jackson";
person1.age = 18;
int a = 10;
int b = 10;
int[] arr = {1,2,3};
int sum = person1.getsum(a,b);
System.out.println("age: " + person1.age);
System.out.println("name: " + person1.name);
System.out.println("person object ---> getsum method result: " + sum);
person1.printarray(arr);
}
}
class person{
String name;
int age;
public int getsum(int a,int b){
return a + b;
}
public void printarray(int[] arr){
for(int i =0; i < arr.length; i++){
System.out.print("arr[" + i + "]: " + arr[i] + " ; ");
}
System.out.println();
b method_b = new b();
method_b.methodb();
}
}
class b{
public void methodb(){
System.out.println("我是b类的一个方法,你实现了跨类调用");
}
}
age: 18
name: jackson
person object ---> getsum method result: 20
arr[0]: 1 ; arr[1]: 2 ; arr[2]: 3 ;
我是b类的一个方法,你实现了跨类调用
方法的调用机制原理
-
(1)调用方法时,会开辟一个独立的栈空间
-
(2)方法执行完成或者遇到return语句时,就会返回
-
(3)方法执行结束,返回到调用方法的地方(返回的是地址),栈空间释放
方法是使用细节
>>返回值
-
(1)一个方法最多一个返回值
-
如何实现返回多个返回值?返回数组
-
(2)返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
-
(3)如果方法要求有返回数据类型,则方法体中最后的执行语句必须为 return 值
-
(4)如果方法是void,则方法体中可以没有return语句,或者 只写 return;
>>形参列表
-
(1)一个方法可以有 0 个参数,也可以有多个参数,中间用逗号隔开,比如 getSum(int n1, int n2)
-
(2)参数类型可以为任意类型,包含基本类型或引用类型,比如 printArr(int[][] map)
-
(3)调用带参数的方法时,一定要对应参数列表传入相同类型或兼容类型的参数!
-
(4)方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参;实参和形参的类型要一致或兼容,个数、顺序必须一致!
>>方法体
里面写完成功能的具体语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法!即:方法不能嵌套定义。