因为程序中用到的某个特定字符串不能直接写在程序中,也不能从外部文件输入,所以必须使用代码生成这个已知的特定字符串。要求每次调用时生成的字符串唯一。
我的笨办法是:将26个字母和10个数字,以及若干个特殊字符放在一个char数组中,然后用代码从这个数组中取字符,组成一个字符串。
各位大师还有没有其他办法?^-^

解决方案 »

  1.   

    long i = new java.util.Date().getTime();
    Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date object. 用这个产生的i一般唯一,如果不行,就将这个步骤同步话。
      long i =0;
      Synchronized(this){
         i = new java.util.Date().getTime();
      }
    再将这个i转化为字符串就可以了。over.
      

  2.   

    mofeir(莫飞) 得方法产生的值还是会重,建议改成long i =0;static long j = 0;
      
    i = new java.util.Date().getTime() + ++j;
      
      

  3.   


    jdk1.5 可以使用 java.util.UUID。jdk1.4版本,则可以去网上找现成开源生成guid的class.
      

  4.   

    请问outiejun(努力赚钱,用心得分儿):
    为什么mofeir(莫飞) 得方法产生的值还是会重?
    为什么加上++j就不会重了?
      

  5.   

    ++j还是存在重复的可能,只不过比mofeir的好点,因为运行速度很快的话,两次执行
    i = new java.util.Date().getTime() 产生的结果可能会一样,因为它取得是当前事件的一个整数值。
      

  6.   

    darkattack(居士) :
    看来我的意思没说清楚,是生成唯一确定的字符串
    比如生成“abcdefgh”这样的字符串,每次生成一致的。而不是每次随机生成一个不同的字符串。
    不过还是谢谢大家:)
      

  7.   

    hxshandle(有妖怪啊) :
    唯一代码生成器? 原理是什么样的呢?
      

  8.   

    /*
    *Fuction:可生成一个指定长度的字符串,长度在main()中传入。
    */
    class produceString{
       public static void main(String[] args){
          
          String s=new newString().nString(20);
          System.out.println(s);
       }
    }
    class newString{
       
       public  String nString(int k){
          //k用于保存传入的要生成的字符串的长度
          String s="\0";
          for(int i=0;i<k;i++){
            s=s+newLetter();
       
          }
          return s;
       }
       public char newLetter(){
              //随机生成一个a~z间的字符
          int j=(int)(Math.random()*26)+97;
              //j>=97&&i<=122
          return (char)j;
       }
    }
      

  9.   

    每次生成一致的?那我就更不懂咯。
    那你直接return "abcdef";不是每次都一样的吗?
      

  10.   

    darkattack(居士):
    return "abcdef";
    这个字符串在反编译后看得到,而且就是用混淆器,这个也是不被混淆得。
    用代码生成特定字符就是为了保护代码中的特殊参数。