public class testsingle
{
private static final testsingle onlyone=new testsingle();
public static testsingle gettestsingle(){return onlyone;}
private testsingle(){}
}
public class Single Test
{
public static void main(String args[])
{ Testsingle obj1 = TestSingle.getTestSingle();
}
}
红色那句话 当testsingle类被调用的时候就会创建一个onlyone``` 然后指向 新的一个testsingle创建的对象onlyone?
然后再指向一个testsingle创建的对象onlyone?
这不无限循环下去啊?
计算机到底怎么运行的啊?小弟想不明白啊```
{
private static final testsingle onlyone=new testsingle();
public static testsingle gettestsingle(){return onlyone;}
private testsingle(){}
}
public class Single Test
{
public static void main(String args[])
{ Testsingle obj1 = TestSingle.getTestSingle();
}
}
红色那句话 当testsingle类被调用的时候就会创建一个onlyone``` 然后指向 新的一个testsingle创建的对象onlyone?
然后再指向一个testsingle创建的对象onlyone?
这不无限循环下去啊?
计算机到底怎么运行的啊?小弟想不明白啊```
解决方案 »
- java开发利用串口进行图像输出
- AGENT中JAVA语法问题
- 进制转换!!
- SWT打包运行问题
- 在线问一个java问题,一个字符传怎么知道包含在另一个字符传里面。。。。???给出方法者给分
- JScrollPane使用JPopupMenu的问题,为什么会是按一下右键消失,再按一下出现,和JPanel或JTable的实现不同?
- 有谁知道能下载JAVA 2.0 的地址?
- 一个有关jdbc的RMI的问题,JAVA高手指点一下
- 谁有 JB5 中文帮助 ? 可否共享?
- jbuilder3中文件对话框的SAVE是怎么回事,请指教
- java面试题,高手帮忙看一下,谢了
- 有一个文本文件,想通过传入行数,来读取该行文本信息,有没有效率高点的方法?
给onlyone里放的什么的地址啊
static表示全局,类加载时执行;
final static 一般用来定义常量。
引用 5 楼 alpha_423 的回复:
就是你这个类的唯一一个实例的内存地址
那给的那个程序里
给onlyone里放的什么的地址啊
作为一般的开发来说,没有必有知道它放在哪里。除非你要自己实现jvm.你非要问常量放在哪里,那么,只能告数你,常量放在常量池里。常量在常量池的什么地方,编译的时候决定的。可以反编译看看.我反编译结果来看,这个常量放在第13个位置
const #13 = Field #1.#14; // test/Test.onlyone:Ltest/Test;常量池在什么地方?
我去google了下,java虚拟机规范里,好像并没有规定常量池放在内存的什么地方。我估计,在类加载的时候,动态开辟一块内存作为常量池。也就说,一个类的常量池的存放地是没有固定地方的。
小弟不想知道放在哪里 是想知道onlyone里放的地址是谁的````
private static final testsingle onlyone=new testsingle();
^^^^^^^^^^^^^^^^ 就是它的地址
new 是一个操作符,他的作用就是新开辟一个内存区域,并返回这个内存的开始地址。这个区域就是新的testsingle的实例使用内存。当然,在new返回指之前,先调用testsingle的构造函数testsingle();所以 onlyyone这个变量(当然,这里它是一个常量。在汇编的角度来看,常量和变量没有区别,都是一块内存)的就是存的上面说的内存区域的开始地址。