基本数据类型

(show()方法出栈 栈里面只有成员变量)

1
2
3
4
5
6
7
8
9
10
11
12
package 引用传递;
//基本数据类型参数传递
public class Demo {
public static void main(String[] args) {
int x = 3;
show(x);//⭐️x=3 show()方法出栈 栈里面只有3
System.out.println("x=" + x);
}
public static void show(int x) {
x = 4;
}
}

image-20181208175552226

image-20181208175608090


1
2
3
4
5
6
7
8
9
10
11
12
package 引用传递;
//基本数据类型参数传递
public class Demo {
public static void main(String[] args) {
int x = 3;
show(x);// 答案x=4 执行的是show 里面的方法
}
public static void show(int x) {
x = 4;
System.out.println("x=" + x);
}
}

image-20181208175756626


image-20181208175849677




引用数据类型参数传递

image-20181208181230101


1
2
3
4
5
6
7
8
9
10
11
12
13
14
package 引用传递;
//引用数据类型
public class Demo2 {
int x = 3;
public static void main(String[] args) {
Demo2 demo2 = new Demo2();
demo2.x=9;
show(demo2);// ⭐️ x=4
System.out.println(demo2.x);
}
public static void show(Demo2 d) {
d.x = 4;
}
}

image-20181208181304546

image-20181208181313939


总结

image-20181208181550692


引用数据类型传递详解

  • 栈内存:保存所有的对象名称 d(保存了引用堆内存空间的地址)

  • 堆内存空间。保存具体对象的具体属性

  • 全局数据区:保存static类型的属性

  • 全局代码区:保存所有的方法定义

    java的引用传递 同一块堆内存空间,同时被多个栈内存指向,不同的栈可以修改同一块堆内存空间的地址


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
30
31
32
33
package 引用传递;

class Demo1 {
private int data = 10;

public Demo1() {
}

public Demo1(int data) {
this.data = data;
}

public int getData() {
return this.data;
}

public void setData(int data) {
this.data = data;
}
}

public class TestDemo {
public static void main(String[] args) {
Demo1 demo1 = new Demo1();
fun(demo1);//
System.out.println(demo1.getData());//30
}

public static void fun(Demo1 temp) { // 接受引用
temp.setData(30);// 修改属性内容
}

}

image-20181208183729045

image-20181208183756336

https://blog.csdn.net/lym152898/article/details/54411956

image-20181208184049245

image-20181208184118821

image-20181208184158837


image-20181208184333093


image-20181208184410426


image-20181208184746357

image-20181208184926276