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);
}
}
|
下面我们给下内存示意图: