Java中基本数据类型和引用数据类型的区别主要在于它们的存储方式和传递方式不同。基本数据类型的值存储在栈中,而引用数据类型的值存储在堆中,栈中存储的是引用数据类型的地址。
举个例子来说明一下:
// 基本数据类型
int a = 10; // a的值在栈中存储
int b = a; // b的值为a所在栈的位置的值,也就是10
a = 20; // 改变a的值,b不受影响
System.out.println(a); // 输出20
System.out.println(b); // 输出10
// 引用数据类型
int[] arr1 = {1, 2, 3}; // arr1在栈中存储,数组{1, 2, 3}在堆中存储,arr1指向数组{1, 2, 3}在堆中的地址
int[] arr2 = arr1; // arr2的值为arr1所在栈的位置的值,也就是数组{1, 2, 3}在堆中的地址
arr1[0] = 100; // 改变数组的值,arr2也会受影响
arr2[1] = 200;
System.out.println(Arrays.toString(arr1)); // 输出[100, 200, 3]
System.out.println(Arrays.toString(arr2)); // 输出[100, 200, 3]
从上面的例子中可以看到,基本数据类型在赋值和修改时,不影响其他变量的值,而引用数据类型在赋值和修改时,会影响其他变量的值,因为它们指向同一个对象在堆中的地址。