成员方法
知识迁移
类比 C 语言中的函数,方法(可以理解为一个类具有某种行为),刚好可以通过写一个函数的方法实现,在 Java 中称为方法
方法的作用
可以更方便的调用某些功能,避免代码冗余,例如可以写一个
mytool类,把需要的功能全部写在类方法中(封装起来),需要的时候直接调用,非常方便
基本介绍
示例代码
java
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)方法中可以传参(称之为形参),也可以不传
方法的使用
1. 调用方法:对象 . 方法名( ),( ) 表示形参列表
(1)方法如果有返回值,需要使用 return 关键字返回返回值,在调用时,可以使用方法的返回值对应数据类型的一个变量接收返回值
(2)传参支持兼容类型(自动类型转换),例如:把
int赋值给double
2. 跨类调用方法
(1)使用 new 创建一个对象,使用 对象.方法名 ( ) 的方式调用,能否成功调用还与访问修饰符有关,后续详谈,这里暂且提一下
(2)注意:只能在类方法里实现跨类调用方法,否则会报错
代码示例
java
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(); //创建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)一个方法可以有 0 个或者多个参数,中间用逗号隔开,比如 getSum (int n1, int n2)
(2)参数类型可以为任意类型,包含基本类型或引用类型,比如 printArr ( int [ ] [ ] map )
(3)调用带有参数的方法时,一定要对应参数列表传入相同类型或兼容类型的参数
(4)方法定义时的参数称为形式参数,简称形参;方法调用时的传入参数称为实际参数,简称实参;实参和形参的类型要一致或兼容,个数、顺序必须一致
方法体
方法体中写完成功能的具体语句,可以为输入、输出、变量、运算、分支、循环、方法调用,但里面不能再定义方法,方法不能嵌套定义
返回值
(1)一个方法最多一个返回值
如何实现返回多个返回值?返回数组
