关于形参和实参
- Java中形参的改变不会影响实参,与形参的数据类型无关
基本类型
int a = 10;
int b = 5;
swap(a,b);
System.out.println(a);
System.out.println(b);
}
private static void swap(int a, int b) {
int t=a;
a = b;
b = t;
运行结果:变量a,b并没有被交换
引用类型
long[] a = {1,2,3,4};
long[] b = {100,200,300};
swap(a,b);
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
}
private static void swap(long[] a, long[] b) {
long[] t = a;
a = b;
b = t;
}
运行结果:可以看到数组a,b的元素并没有完成交换
2. 引用类型的共享特性
可以根据共享的特性,实现再方法中修改数据,让方法外看到
long[] a = {1,2,3,4};
swap(a,0,3);
System.out.println(Arrays.toString(a));
}
private static void swap(long[] array, int index1, int index2) {
long t = array[index1];
array[index1] = array[index2];
array[index2] = t;
运行结果:可以看到首尾元素的值在方法内部发生了交换,在方法外可以通过a引用观察到。
关于概念的阐述
- 引用
是提供给程序员间接操作对象的一个工具/方法。 - 对象
一组相关数据(基本/引用)+与数据相关的一组操作
在内存中:一块区域,存储着相关的数据 - 引用可以指向对象,也可以不指向对象(null),但对象不可以指向对象。
- 引用支持的操作(=, ==, !=, .,[ ])
分别是赋值,指向同一对象,指向不同对象,获取,修改操作。
关于二维数组
二维数组有两种方式定义:
1.
long [][]a = {
{1,2,3},
{4,5,6},
{11,12,13,14},
{45,46,46,78}
};
long[][] a = new long[5][];
如上方式定义出二维数组a,其元素数据类型为long[ ] (引用类型)。
1.该变量未被赋值,则值为默认值,即a[0] == a[1] ==…==a[4] ==0。
2.继续解引用会引起空值异常,操作a[0][0] = 10; 报错NPE。
对二维数组可采用图形来理解。圆圈代表引用,方框代表对象
引用的大小是相同,对象的大小可不同。