1.基本类型及其包装类
基本类型
package com.itcast;
public class JavaTest {
public static void main(String[] args) {
int a = 1;
changeValue(a);
System.out.println(a);
}
public static void changeValue(int a) {
a = 2;
}
}
控制台:1
基本类型包装类
package com.itcast;
public class JavaTest {
public static void main(String[] args) {
Integer a = 1;
changeValue(a);
System.out.println(a);
}
public static void changeValue(Integer a) {
a = 2;
}
}
控制台:1
2.引用类型
package com.itcast;
public class JavaTest {
public static void main(String[] args) {
Student student = new Student();
student.name = "张三";
changeName(student);
System.out.println(student.name);
}
public static void changeName(Student student) {
student.name = "李四";
}
}
控制台:李四
3.数组
package com.itcast;
public class JavaTest {
public static void main(String[] args) {
int array[] = {1, 1, 1};
changeArray(array);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
}
public static void changeArray(int array[]) {
array[0] = 2;
array[1] = 2;
array[2] = 2;
}
}
控制台:2 2 2
通过上面的实验,我们能知道基本类型和起包装类(包括String!!!)在函数中是作为值传递的,而引用类型和数组则是将地址传过去.
- 栈:基本数据类型、数据的引用变量,这两种存放在栈内存
- 堆:new创建的对象(包括数组、集合等),是存放在堆内存中,同时分配一个内存地址值,并将其赋值给引用它的变量。
栈有一个很重要的特殊性,就是存在栈中的数据可以共享。