Java中string的交换

    技术2022-07-11  82

    Java实现引用交换

    前提

    Java自身机制,导致函数参数的传递其实无论是基本类型还是引用类型,实质都是值传递,无法直接通过函数临时交换达到引用交换的目的虽然无法直接实参数指向交换,但是可以通过其他方法实现

    实现

    第一种方法是直接交换,即不通过函数传参数交换,直接用类似 string temp = null; string temp = s1; s1 = s2; s2 = temp; 通过反射实现 public static void exchange(String s1,String s2){ try { Object temp; Field fv = String.class.getDeclaredField ( "value" ); Field fh = String.class.getDeclaredField ( "hash" ); fv.setAccessible ( true ); fh.setAccessible ( true ); //交换 temp = fv.get (s1); fv.set(s1, fv.get(s2)); fv.set(s2, temp); fh.setInt(s1, 0); fh.setInt(s2, 0); } catch (Exception e) { e.printStackTrace (); } }
    Processed: 0.009, SQL: 9