У меня есть класс:
package com.test;
public class TestA {
public static final String TEST = "饕餮ABCDEFG";
public TestA() {
System.out.println(TEST.hashCode());
}
}
Тот же класс (без пакета, поместите его в E :, javac Test.java, получите Test.class):
public class TestA {
public static final String TEST = "饕餮ABCDEFG";
public TestA() {
System.out.println(TEST.hashCode());
}
}
Тестовый класс:
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();
}
}
выход: * +1010 *
250218913
1111280555
Вопрос:
почему это случилось?
Я думаю, что строка "饕餮 ABCDEFG" имеет тот же адрес, потому что постоянный пул.
введите описание изображения здесь