import java.lang.reflect.Field;
public class ModifyStr {
public static void ModifyString(String s){
String tmp = "想改就改,怎么着吧";
Class cls = s.getClass();
try {
Field offset = cls.getDeclaredField("offset");
offset.setAccessible(true);
offset.setInt(s, 0);
Field count = cls.getDeclaredField("count");
count.setAccessible(true);
count.setInt(s, tmp.length());
Field value = cls.getDeclaredField("value");
value.setAccessible(true);
value.set(s, tmp.toCharArray());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
// TODO Auto-generated method stub
String s = "什么都行";
ModifyString(s);
System.out.println(s);
}
}
import java.lang.reflect.Field;
public class SwapString {
public void swap(String str1, String str2){
String tmpStr = new String(str1);
Class cls = String.class;
try {
Field offset = cls.getDeclaredField("offset");
Field count = cls.getDeclaredField("count");
Field value = cls.getDeclaredField("value");
offset.setAccessible(true);
count.setAccessible(true);
value.setAccessible(true);
offset.setInt(str1, 0);
count.setInt(str1, str2.length());
value.set(str1, str2.toCharArray());
offset.setInt(str2, 0);
count.setInt(str2, tmpStr.length());
value.set(str2, tmpStr.toCharArray());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
SwapString ss = new SwapString();
String s1 = "String1";
String s2 = "String2";
System.out.println("Before Swap :/n s1 = "+s1+", s2 = "+s2);
ss.swap(s1, s2);
System.out.println("After Swap :/n s1 = "+s1+", s2 = "+s2);
}
}



















































