fab*_*uce 1 java string classloader
我有一节课:
package com.test;
public class TestA {
public static final String TEST = "??ABCDEFG";
public TestA() {
System.out.println(TEST.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
同一个类(没有包,把它放在E:,javac Test.java中,得到Test.class):
public class TestA {
public static final String TEST = "??ABCDEFG";
public TestA() {
System.out.println(TEST.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
测试类:
package com.test;
import java.net.URL;
import java.net.URLClassLoader;
public class Test3 {
public static void main(String[] args) throws Exception {
URLClassLoader loaderA = new URLClassLoader(new URL[]{new URL("file:E:/")});
Class clazzA = loaderA.loadClass("TestA");
clazzA.newInstance();
TestA testA = new TestA();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
250218913
1111280555
问题:为什么会这样?我认为字符串"饕餮ABCDEFG"具有相同的地址,因为常量池. 在此输入图像描述
程序输出为我提供了相同的哈希码.
您获得不同哈希码的原因
有一些你看不到的特殊性格.您可以通过复制hexed.it中的文本来识别
一个文件存储为UTF8,另一个文件存储为CP1652或其他编码.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |