码迷,mamicode.com
首页 > 编程语言 > 详细

Java实现交换两个String

时间:2014-11-02 07:03:51      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   java   sp   div   

在Java中我们所使用的实例变量其实都是一个引用,所以如果要求实现一个swap(String A, String B)这种函数时无法实现的,因为在类方法的定义中是先对行参进行地址传递,然后对形参修改,所以对原来的变量不产生影响

一种实现方法是不使用方法传递参数,直接交换,另一种有趣的方式是使用Java的反射来实现

import java.lang.reflect.*;

public class SwapStr
{
	public static void swap(String str1, String str2)
	{
		try{
			Object temp;

			Field fv = String.class.getDeclaredField("value");
			Field fh = String.class.getDeclaredField("hash");

			fv.setAccessible(true);
			fh.setAccessible(true);

			temp = fv.get(str1);
			fv.set(str1, fv.get(str2));
			fv.set(str2, temp);

			fh.setInt(str1, 0);
			fh.setInt(str2, 0);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	public static void main(String[] args)
	{
		String str1 = "hello";
		String str2 = "world";

		swap(str1, str2);

		System.out.println(str1 + " " + str2);
	}
}

Java实现交换两个String

标签:style   blog   io   color   ar   使用   java   sp   div   

原文地址:http://www.cnblogs.com/elvalad/p/4068296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!