因为程序中用到的某个特定字符串不能直接写在程序中,也不能从外部文件输入,所以必须使用代码生成这个已知的特定字符串。要求每次调用时生成的字符串唯一。
我的笨办法是:将26个字母和10个数字,以及若干个特殊字符放在一个char数组中,然后用代码从这个数组中取字符,组成一个字符串。
各位大师还有没有其他办法?^-^
我的笨办法是:将26个字母和10个数字,以及若干个特殊字符放在一个char数组中,然后用代码从这个数组中取字符,组成一个字符串。
各位大师还有没有其他办法?^-^
解决方案 »
- 关于junit4中testsuite使用的问题
- 请问怎样查看java程序占用的内存
- java.net.url中文网址报错java.io.FileNotFoundException
- 简单的Socket通信问题
- 烦请推荐JAVA入门好书
- Java多行文本无法显示滚动条?JTextArea和JScrollPane问题
- 我用了MediaTracker 后 , 为什么 paint方法被不停的调用?
- 如何在Java中将在非模态对话框中的数据传送出来?
- 我在那里能够DOWN到JAVA的编译引擎。再线等待!谢谢。
- 如何在JPanel当中画出一个图像?
- String cc = aa.replaceAll("\\+","");
- 大家看看这个算不算是数据库的连接池?
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.
i = new java.util.Date().getTime() + ++j;
jdk1.5 可以使用 java.util.UUID。jdk1.4版本,则可以去网上找现成开源生成guid的class.
为什么mofeir(莫飞) 得方法产生的值还是会重?
为什么加上++j就不会重了?
i = new java.util.Date().getTime() 产生的结果可能会一样,因为它取得是当前事件的一个整数值。
看来我的意思没说清楚,是生成唯一确定的字符串
比如生成“abcdefgh”这样的字符串,每次生成一致的。而不是每次随机生成一个不同的字符串。
不过还是谢谢大家:)
唯一代码生成器? 原理是什么样的呢?
*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;
}
}
那你直接return "abcdef";不是每次都一样的吗?
return "abcdef";
这个字符串在反编译后看得到,而且就是用混淆器,这个也是不被混淆得。
用代码生成特定字符就是为了保护代码中的特殊参数。