swap()方法体直接写在main方法中运行正确,调用的话就错了。求解!
public class bubblesort {
public static void swap(int a,int b){
int temp;
temp = a;
a = b;
b = temp;
}
public static void main(String[] args) {
int i,j;
int [] array = new int[]{21,51,32,8,6,2,1,4,8,9};
for(i=0;i<8;i++)
for(j=0;j<8-i;j++){
if(array[j+1]<array[j]) swap(array[j],array[j+1]);
}
for(i=0;i<10;i++) System.out.print(array[i]+" ");
}
}
是对内存跟栈内存的错?
数组在JAVA里不是引用类型吗?
还是用静态数组跟动态数组的问题?
静态数组是基本数据类型,动态数组是引用类型?
我推荐你看下李刚的疯狂java讲义,里面说的满清楚的,比如
public class bubblesort {
public static void swap(int a,int b){
int temp;
temp = a;
a = b;
b = temp;
}
public static void main(String[] args) {
int[] a={1,2};
swap(a[0],a[1])
System.out.println(a[0]+","+a[1]);
}
}
首先mian方法是一个栈,他先定义了一个变量a,然后堆内存里面定义了个数组,然后把a指向了这个数组,调用swap()方法,有新建了一个栈,然后这个栈里新建了3个变量,分别是a,b,temp,然后因为他们是基本型,所以是吧数组第一个数的值赋予给a,这里不是引用,同理第二个数的值赋予给b,然后把temp的值用a的值赋予,a的值用b的值赋予,b的值用temp的值赋予,方法结束,swap()方法里面的数据结束,回到main()方法中,打印数组里面的第一个值和第二格值,所以说swap对数组根本没有影响,大概是这么个样
那就是这个问题,JAVA中数组在什么情况下是引用类型?
追答不知道怎么回答。数组定义的类型除过基本数据类型外,其他引用类型。
本回答被提问者采纳这么肯定对了,我想问问数组的细节问题,比如内存跟数据类型的问题
我看书上说数组是引用类型,是由数组元素的数据类型决定的吗?
数据类型有基本数据类型和引用类型
所以说除了基本数据类型,其他都是引用类型。跟数组里的元素没有关系