「java对象的唯一标识」java获取客户端唯一标识
今天给各位分享java对象的唯一标识的知识,其中也会对java获取客户端唯一标识进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、使用java.util.UUID生成唯一标识,为什么生成唯一标识的方法有些还需要参数?
- 2、JAVA中,String类中的hashCode()方法有什么作用呢?
- 3、java的jvm在执行java程序的时候,会给新建的对象分配一个唯一的标识,请问这个唯一标识怎么获取阿???
使用java.util.UUID生成唯一标识,为什么生成唯一标识的方法有些还需要参数?
//先看不加参数的源码
public static UUID randomUUID() {
SecureRandom ng = Holder.numberGenerator;
byte[] randomBytes = new byte[16];
ng.nextBytes(randomBytes);
randomBytes[6] = 0x0f; /* clear version */
randomBytes[6] |= 0x40; /* set to version 4 */
randomBytes[8] = 0x3f; /* clear variant */
randomBytes[8] |= 0x80; /* set to IETF variant */
return new UUID(randomBytes);//看到这里没,其实也是调用的带参数的,只不过
//所带参数的是给你随机出来的
}
//再看带参数的
public static UUID nameUUIDFromBytes(byte[] name) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException nsae) {
throw new InternalError("MD5 not supported");
}
byte[] md5Bytes = md.digest(name);//这里就是对给的byte[]参数进行md5运算之后再进行计算UUID
md5Bytes[6] = 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[8] = 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */
return new UUID(md5Bytes);
}
JAVA中,String类中的hashCode()方法有什么作用呢?
hash从意义上来说应该是实现值的比较。
hashCode值与
对象引用
没有必然联系。在java中,值相同的两个字符串不一定是同个对象。比如你上面的a和b就是两个不同的对象。
字符串的hash值是根据字符串的值计算的,相同值的字符串对象hash值一定相同,具体的计算方法在jdk的文档中有描述.
每个java对象都有一个唯一的标识,object类中的hash方法就是直接返回对象的这个内部id号,与string的hash方法是不同的,object的hash方法能够用来区分不同的对象.因为原始的object对象没有任何有意义的值可用来计算哈希
java的jvm在执行java程序的时候,会给新建的对象分配一个唯一的标识,请问这个唯一标识怎么获取阿???
可以使用对象的toString()方法,回返回一个字符串,字符串后半部分的哈希码就是唯一的。
toString
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
返回:
该对象的字符串表示形式。
java对象的唯一标识的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java获取客户端唯一标识、java对象的唯一标识的信息别忘了在本站进行查找喔。
发布于:2022-11-27,除非注明,否则均为
原创文章,转载请注明出处。