分析
方法调用小结
1.当程序执行到方法时,就会开辟一个独立的空间(栈空间)
2.当方法执行完毕,或者执行到return语句时,就会返回到调用方法的地方,
并销毁该方法的栈空间
3.当程序继续执行下去,则栈中的main栈也会销毁,程序退出
例子
public class text {
public static void main(String[] args) {
//方法使用
person p1 =new person(); // 创建一个对象p1
p1.speak(); //对象p1调用方法speak()
p1.calculate();
p1.cale(100);//调用cale方法,将100传参给cale成员方法的int n 中
int returnSum = p1.Sum(1,2); // 调用 Sum方法 ,同时传参 num1=1,num2=2 ,将SUm返回值结果赋给returnSum
System.out.println("Sum的返回值"+returnSum);
System.out.println("Sum的返回值+64的结果是"+(p1.Sum(1,2)+64));
}
}
class person { //创建一个类person
//定义成员属性name,age
String name;
int age;
//定义一个公开的speak成员方法
public void speak () {
System.out.println("you are good girl");
}
//定义一个公开的calculate成员方法,用于打印1到10的和
public void calculate () {
int sum =0;
for (int i =1; i <= 10;i++) {
sum = sum + i;
}
System.out.println("总和是"+sum);
}
//定义一个公开的cale 成员方法,用于打印1到n的和
// (int n) 形参列表,表示当前有一个形参 , 可以接收用户传入1个数
public void cale ( int n) {
int sum =0;
for (int i =1; i <= n;i++) {
sum = sum + i;
}
System.out.println("总和是"+sum);
}
//定义一个公开的,有返回值(int类型) 的sum成员方法,用于两数之和
// (int num1,int num2) 形参列表,有两个形参,可以接收用户传入2个数
public int Sum( int num1,int num2) {
int res = num1+num2;
return res; //方法执行后,返回一个 (int 值)res, 谁调用给谁
}
}
注意事项
- 如果方法是void,则方法体中可以没有return语句,或者只写return ;
- 方法名要用驼峰法则来命名 ,eg:andSum
- 成员方法的参数类型可以是任一类型,包括基本类型或引用类型
- 方法体中的语句可以是 【输入、输出、变量、运算、分支、循环、方法调用】,
但注意 里面不能再定义方法,但可以调用方法 - 实参和形参的类型要一致或兼容、个数、顺序必须一致
- 一个方法最多有一个返回值,但成员方法是可以有多个返回值的(数组)
public class text {
public static void main(String[] args) {
Cale cale = new Cale(); //创建一个对象,用来引用gerSumAndSub方法
//创建一个数组用来接收getSumAndSub方法的 两数之间的和与差 ,并依次赋予数组的元素
int Outarr[] = cale.getSumAndSUb(3,2);
for (int i = 0; i<Outarr.length;i++) {
System.out.print(Outarr[i] +"\t") ;
}
}
}
class Cale {
public int [] getSumAndSUb(int num1,int num2) {
int [] arr = new int[2];
arr[0] = num1+num2;
arr[1] = num1-num2;
return arr; //返回arr数组
}
}
- 如果方法要求有返回值,则方法体最后的执行语句是return语句 ,
而且两者的数据类型得一致
public class text {
public static void main(String[] args) {
}
}
class At {
public double f1() {
double d1 = 1.1 * 3;
int n = 100;
return n; //可以的,int值传给double
}
}
- 同一个类中,方法之间可以互相调用
public class text {
public static void main(String[] args) {
A a =new A();
a.getOut();
}
}
class A {
public void out () {
System.out.println("嘿嘿");
}
public void getOut(){
out(); //调用同类中的其他方法
}
}
- 跨类之间调用方法
public class text {
public static void main(String[] args) {
B b = new B();
b.getOut();
}
}
class A {
public void out () {
System.out.println("嘿嘿");
}
}
class B {
public void getOut () {
A a =new A(); ///若想B类的getOut方法调用A类的 out 方法 ,只需要在B类中创建一个A对象,就能调用
a.out();
}
}