引用传递 是将堆内存数据交由栈内存操作,数据按照函数的操作改变。范例1与范例2中的函数都属于引用操作。
范例1:
//通过printArray(int temp[])打印数组
public class mainDemo{
public static void main(String args[]){
int [] data = new int[]{1,3,5,7,9};
printArray(data);
}
public static void printArray(int temp[]){
for(int i = 0;i<temp.length;i++){
System.out.println(temp[i]+",");
}
System.out.println();
}
}
范例1数组与方法传递空间分配情况:
范例2:
//使用函数inc将数组中的每个元素除以2并输出结果
public class mainDemo{
public static void main(String args[]){
int [] data = new int[]{1,3,5,7,9};
inc(data);
printArray(data);
}
public static void printArray(int temp[]){
for(int i = 0;i<temp.length;i++){
System.out.println(temp[i]+",");
}
System.out.println();
}
public static void inc(int arr[]){
for(int i = 0;i<arr.length;i++){
arr[i]* = 2;
}
}
}
范例2数组与方法传递空间分配情况:
范例3: 排序
//实现功能:传入一个数组,将数组内容从小到大排列并输出
public class Sort{
public static void main(String args[]){
int temp;
int data[] = new int[]{1,2,7,3,5,4,9,0};
for(int t = 0;t<data.length-1;t++){
for(int i = 0;i<data.length-1;i++){
if(data[i]>data[i+1]){
temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
}else{
continue;
}
}
}
for(int j = 0;j<data.length;j++)
System.out.println(data[j]);
}
}
范例4: 逆序
//将一个数组逆序输出的方法有2种
//定义一个与原数组大小相同的数组,将原始数组的内容逆序赋值给新数组,并输出新数组的内容
public class mainDemo{
public static void main(String args[]){
int flag = 0;
int data[] = new int[]{1,3,5,2,4,7,8,9};
int rdata[] = new int[data.length];
for(int i = data.length-1;i>=0;i--){
rdata[flag] = data[i];
flag = flag+1;
}
for(int j = 0;j<rdata.length;j++){
System.out.print(rdata[j]+",");
}
}
}
//遍历当前数组,互换对称位置的数字并输出
public class R{
public static void main(String args[]){
int data[] = new int[]{1,3,5,2,4,7,8,9};
int flag = data.length-1;
int temp;
for(int i = 0;i<data.length/2;i++){
temp = data[i];
data[i] = data[flag];
data[flag] = temp;
flag --;
}
for(int j =0;j<data.length;j++)
System.out.print(data[j]+",");
}
}