我尝试在java中初始化2D双数组,这个双数组有1000行和50 cols。
当我这样做时,我得到了一个错误:
Too many constants, the constant pool for ClassName would exceed to 65536 entries.
以下是我工作的一部分:
double[][] haltonArray = {{0.116538, -1.08275, -0.832512, 1.9746, 1.68741, 2.23391,
0.703111, -0.400975, -1.8214, -2.22141, 0.127014,
在.jca文件文档中,提到常量池部分如下所示。
.constantPool {
/*
* The first six entries declare constant pool entries that
* are contained in
* other packages.
* Note that superMethodRef are always declared internal
* entry.
*/
classRef 0.0; /
让我们看一看折叠代码片段:
String s1 = "Hello";
String s2 = "Hello";
由于实习,这两个变量都指向同一个对象。由于字符串是不可变的,因此只创建了一个对象,并且都引用了同一个对象。
constant pool也是一种东西,它包含所有常量(整数、字符串等)。在类中声明的。这是每个班级的具体情况。
System.out.println("Hello"); // I believe this Hello is different from above.
问题:
string pool是指常量池中的
public class A {
}
public class B {
public static void b() {
System.out.println(A.class);
}
}
类文本A.class是如何在B.class的字节码中编译的?这是场参考资料吗?我在Oracle/Sun的字节码文档中找不到这一点。
无论它是什么,反编译者都不会有困难:
java -jar decompiler.jar B.class
拾起JAVA_TOOL_OPTIONS:‘-Dfile.code=UTF8’8‘
/由Procyon v0.5.30 //
公共类B{公共
根据以下链接,java堆栈帧包含局部变量、操作数堆栈和当前类常量池引用。
也来自Oracle "Structure of JVM“第2.6.3节。“动态链接-每个框架(§2.6)都包含对当前方法类型的运行时常数池(§2.5.5)的引用,以支持方法代码的动态链接。”
我还了解到堆中的对象也有指向类数据的指针/引用。
堆栈帧将包含“当前类常量池引用”,它还将具有对堆中对象的引用,而堆中的对象也将指向类数据。这不是多余的吗??
例如。
public class Honda {
public void run() {
System.out.println("honda is
最近几天,我一直在尝试理解字符串常量池和国际米兰的概念,在阅读了许多文章之后,我理解了其中的一些部分,但仍然对一些事情感到困惑:-
1.String a = "abc" --它在字符串常量池中创建一个对象,但下面的代码行是否在字符串常量池?String b = ("xyz").toLowerCase()中创建对象"xyz“
2.
String c = "qwe"
String d = c.substring(1)
d.intern()
String e = "we"
如果在类加载过程中将文字"
我使用大约1000个与特定java.util.Properties相关联的属性,该属性由一个文件支持。文件的主要原因是在不重新编译程序的情况下更改它们,并允许用户根据自己的喜好进行调整。有些属性仅在代码中的一个位置使用,但有些属性在不同的代码段甚至不同的类中被多次使用。
最近,我习惯于声明所有用作字符串常量的属性,通常是在一个独立的接口中,如下所示:
public interface AnimalConstants {
public static final String WEIGHT_PROPERTY = "weight";
public static final S
Java在其Java7中引入了带有字符串的switch case。我想知道使用这样的开关是否会产生垃圾。
例如,在我的程序中,
String s = getString();
switch(s)
{
case ABC: // ABC is a final static constant
...
case CDE: // CDE is also final static constant.
...
}
java是如何执行这种切换的。假设有10个这样的开关情况。是否会在每次将string s与case ABC匹配时创建一个新字符串,以此类推?
如果是这种情况,它是