我想从字符串值中获取字节(用于加密/解密目的), 我为此目的使用了getBytes()方法,但每次调用getBytes()方法时, 它每次都返回一个新的数组字节。 我想要一个特定字符串的唯一字节数组。 怎么样 ?此外,我想将该信息(字符串或字节)存储在一个文件中,我想以字节的形式获取这些信息。
答案 0 :(得分:2)
getBytes()
每次都不会返回新的byte [],但内容相同。
请查看以下示例
byte[] b1 = "abc".getBytes();
byte[] b2 = "abc".getBytes();
if(b1 == b2)
{
System.out.println("Equal Not possible");//Not this
}
if(Arrays.equals(b1, b2))
{
System.out.println("Equal possible");//Gets printed
}
由于Array的内容相同,所以在整个Java世界中任何可能的加密/描述算法都不应有任何区别!
答案 1 :(得分:0)
如果String每次都给你相同的字节数组,那么它将违反方法的约定。原因如下:
String a = "test";
byte[] abytes1 = a.getBytes();
abytes1[0] = 0; // we are modifying the byte array.
// There is no way to prevent this!
// some other caller later on does this:
byte[] abytes2 = a.getBytes();
如果abytes2
与abytes1
的数组相同,则第一个条目的值为0,并且不匹配字符串的值。每次调用者决定修改数组时,String.getBytes()必须创建一个新数组。