方法的形式参数
-
形式参数是基本数据类型
-
形式参数是引用类型
(1)形式参数是基本数据类型
基本数据类型作为方法的形参,形式参数的改变不影响实际参数
public static void main(String[] args) {int a = 10;int b = 20;System.out.println(a);System.out.println(b);change(a, b);System.out.println(a);System.out.println(b);}public static void change(int a,int b){a = b+10 ;b = a-b;System.out.println("a:"+a+",b:"+b);}
在调用change()方法时,分别给变量“a”和“b”做了赋值的转换。作为局部变量,它的生命周期随着方法的调用而存在,随着方法的调用完毕而消失。在内存中的体现,就是在栈内存中调用完毕后,里面局部变量就立即被GC垃圾回收器回收。所以,此时变量“a”和“b”的值不会发生改变。运行结果如下:
(2)形式参数是引用类型
引用类型:类:当你看到一个类作为方法参数类型的时候,将来调用时需要传递该类及其该类的子类对象class Demo1 {public void fun1() {System.out.println("好好学习,天天向上!");}
}
class Demo1Zi extends Demo1{}
class Demo1Test {public void show(Demo1 demo1) { //Demo1 demo1 = new Demo1Zi()demo1.fun1();}
}
public class StudentDemo1 {public static void main(String[] args) {Demo1Test demo1Test = new Demo1Test();demo1Test.show(new Demo1());demo1Test.show(new Demo1Zi());}
}抽象类:当你看到一个抽象类作为方法的参数类型的时候,将来调用时需要传递继承该抽象类的具体子类对象abstract class Demo2{public abstract void fun1();
}class Demo2Zi extends Demo2{@Overridepublic void fun1() {System.out.println("我真棒!");}
}class Student2{public void show(Demo2 demo2){ //Demo2 demo2 = new Demo2Zi()demo2.fun1();}
}public class StudentDemo2 {public static void main(String[] args) {Student2 student2 = new Student2();student2.show(new Demo2Zi());}
}接口:当你看到一个接口作为方法参数类型的时候,将来调用时需要传递实现该接口的具体子类对象interface Inter1{public abstract void fun1();
}class Inter1Impl implements Inter1{@Overridepublic void fun1() {System.out.println("Hello World!");}
}class Student3{public void show(Inter1 inter1){ //Inter1 inter1 = new Inter1Impl() 接口多态inter1.fun1();}
}public class StudentDemo3 {public static void main(String[] args) {Student3 student3 = new Student3();student3.show(new Inter1Impl());}
}
返回值类型
1、返回值类型是基本数据类型
(1)包括 byte, short, int, long, float, double, char, boolean 等原始数据类型,方法返回的是这些基本类型的具体数值。
(2)无返回值类型:
使用 void 关键字表示,这类方法不返回任何值,主要用于执行某种操作,如打印信息、修改对象状态等
若一个方法没有返回值,return可以省略不写
2、返回值类型是引用数据类型
类:当你看到一个类作为方法的返回值类型的时候,将来方法内部应该返回该类或该类的子类对象
package com.shujia.day10.ketang.bao2;
class Student1{public void fun1(){System.out.println("欢迎大家来到数加学院!");}
}
class Demo1{public Student1 show(){return new Student1();}
}
public class StudentDemo1 {public static void main(String[] args) {Demo1 demo1 = new Demo1();Student1 s1 = demo1.show(); // Student1 s1 = new Student1()s1.fun1();}
}抽象类:当你看到一个抽象类作为方法的返回值类型的时候,将来方法内部应该返回继承该抽象类的具体子类对象
abstract class Demo2{public abstract void fun1();
}
class Demo2Zi extends Demo2 {@Overridepublic void fun1() {System.out.println("小祝是阿里巴巴的高级开发程序员");}
}class Student2 {public Demo2 show() {return new Demo2Zi();}}public class StudentDemo2 {public static void main(String[] args) {Student2 student2 = new Student2();Demo2 d1 = student2.show(); //Demo2 d1 = new Demo2Zi() 抽象多态d1.fun1();}}
接口:当你看到一个接口作为方法的返回值类型的时候,将来方法内部应该返回实现了该接口的具体子类对象
interface Inter1{public abstract void fun1();
}
class Inter1Impl implements Inter1{@Overridepublic void fun1() {System.out.println("昨天南京下冰雹了");}
}
class Student3{public Inter1 show(){return new Inter1Impl();}
}
public class StudentDemo3 {public static void main(String[] args) {Student3 student3 = new Student3();Inter1 i1 = student3.show(); //Inter1 i1 = new Inter1Impl() 接口多态i1.fun1();
// new Student3()
// .show()
// .fun1(); // 调用方式:链式调用}
}