Java面向对象-方法的值传递和引用传递

Java面向对象-方法的值传递和引用传递

发布时间:『 2016-08-21 14:21』  博客类别:Java核心基础  阅读(197) 评论(0)

Java面向对象-方法的值传递和引用传递

方法的值传递:

值传递 在方法里改变变量的值 作用范围仅仅是方法里 对外面不影响:

上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.java1234.chap03.sec03;
 
public class Person {
 
    void speak(int age){
        System.out.println("我今年"+age+"岁了");
        age=24// 作用范围是方法里
    }
     
    public static void main(String[] args) {
        Person xiaoli=new Person();
        int age=23;
        xiaoli.speak(age);
        System.out.println(age);
    }
}

引用传递,传递的是地址,对象里的属性在方法里值修改,对外面有影响,我们通过对象.属性可以获取到最新的数据;

上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.java1234.chap03.sec03;
 
class SanWei{
    int b; // 胸围
    int w; // 腰围
    int h; // 腿围
}
 
public class Person {
 
    void speak(int age,SanWei sanWei){
        System.out.println("我今年"+age+"岁了,我的三围是:"+sanWei.b+","+sanWei.w+","+sanWei.h);
        age=24// 作用范围是方法里
        sanWei.b=80// 胸围改成80
    }
     
    public static void main(String[] args) {
        Person xiaoli=new Person();
        int age=23;
        SanWei sanWei=new SanWei();
        sanWei.b=90;
        sanWei.w=60;
        sanWei.h=90;
        // age传递的是值 ,sanWei是对象,传递的是引用(地址,c里叫指针)
        xiaoli.speak(age,sanWei);
        System.out.println(age);  
        System.out.println(sanWei.b);
    }
}

下面我们给下内存示意图:

Java面向对象-方法的值传递和引用传递

上一篇:nw.js---创建一个点击菜单


下一篇:Java基础:Object类中的equals与hashCode方法