java中是不可以把方法作为参数传递的,java中只有值传递和引用传递,但是在javascript中可以直接将函数作为参数传递。其实javascript中的函数就是对象。
因为java中没有指针,其实只有值传递。但是可以把java中的对象看做是指针。java说的是没有指针,其实到处都是指针。
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。如下:- public class Demo {
- public static void main(String[] args) {
- int x = 6;
- System.out.println("传递参数之前的实参值:"+x);
- System.out.println("函数返回的值"+add(x));
- System.out.println("传递参数之后的实参值:"+x);
- }
-
- //值传递
- public static int add(int x){
- return x+5;
- }
- }
复制代码 引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。- /**
- * 引用传递值
- * @author Administrator
- *
- */
- public class Demo1 {
- public static void main(String[] args) {
- Person1 p1 = new Person1("张三",34);
- System.out.println("调用方法前的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
- Person1.change(p1,"李四",90);
- System.out.println("调用方法后的Person对象的name===========>"+p1.getName()+"------------age===========>"+p1.getAge());
- }
-
- }
- class Person1{
- private String name;
- private int age;
-
- //无参数构造方法
- public Person1() {
- }
- //有参数构造方法
- public Person1(String name, int age) {
- this.name = name;
- this.age = age;
- }
-
- //get方法和set方法
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
-
- //交换方法
- public static void change(Person1 p,String name,int age){
- p.name = name;
- p.age = age;
- }
- }
复制代码 希望能对楼主起作用 |