• Java实现交换两个String


    在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);
    	}
    }
    ------------------------------- 问道,修仙 -------------------------------
  • 相关阅读:
    外部中断实验
    冒泡算法代码
    第5章 嵌入式系统开发与维护知识 5.1
    C语言学习视频,栈,队列,链式栈,链式队列
    USART的配置
    树的一些基本概念
    mysql外键
    数据结构之【队列】
    数据结构之【栈】
    数据结构之【数组】
  • 原文地址:https://www.cnblogs.com/elvalad/p/4068296.html
Copyright © 2020-2023  润新知