关于用异或的方式,进行数组元素的位置互换,毕老师说可以,小弟我的异或方式打印结果不对

关于用异或的方式,进行数组元素的位置互换,毕老师说可以,我的异或方式打印结果不对请指教
public class ArrayTest2 {
public static void main(String[] args) {
int [] arr={5,1,6,4,2,8,9};
printArray(arr);
bubbleSort(arr);
printArray(arr);
}
//冒泡排序
public static void bubbleSort(int [] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for (int y=0;y<arr.length-x-1;y++)//-x:让每一次的比较的元素减少,
//-1:避免角标越界
{
if(arr[y]>arr[y+1])
{
swap(arr,x,y);
// int  temp=arr[y];
// arr[y]=arr[y+1];
// arr[y+1]=temp;
}
}
}
}



public static void swap(int []arr, int a,int b )
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;

//老毕说的方法,但我没能实现
  /*arr[a]=arr[a]^arr[b];
  arr[b]=arr[a] ^arr[b];
  arr[a] =arr[a]^arr[b]; */                  
}

public static void printArray(int [] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}

------解决方案--------------------
是你的冒泡算法写错了啦
不是swap(arr,x,y);
是swap(arr, y, y+1)交换相邻两个元素啦,冒泡理解了没有啊
------解决方案--------------------
冒泡写错了吧,不是这样写的