利用递归进行解决,这里没有考虑字符串中含有重复字符的情况,当字符串长度为1的时候,输出字符,否则递归调用函数
package Varstatic;
import java.util.Arrays;
public class Varstatic {
    public static void main(String[] args){
    	 String str = "123456";
    	  getString("",str);
    	 }
    static   int sum=0;
    	 private static void getString(String former,String latter){
    		 
    	  if(latter.length()==1){
    	   System.out.println(former+latter);
    	   sum++;
    	   System.out.println(sum);
    	  }
    	  else{
    	   int len= latter.length();
    	  
    	   for(int i=0;i<len;i++){
    	    String temp = latter.substring(i,i+1);
    	    String tf = former+temp;
    	    String tl=latter.replace(temp,"");
    	    getString(tf,tl);
    	   
    	   }
    	  }
    	   
    	 }
    	}
原文:http://www.cnblogs.com/catWang/p/4348808.html