正在加载图片...
不过这里用到了Java的一个特有的特性:字符串可以用以引号括起来的 文字进行初始化。通常情况下,你必须用一种更为通用的方法对对象进行 初始化 你必须创建所有的对象 创建完 reference之后,你就得往上面连新的对象了。大体上,你得用 new关键词来作这件事。关键词new的意思是,“给我创建一个新的 那种类型的对象。”所以在上述例程中,你可以用: String s new String("asdf " 它不仅表示“给我创建一个新的 String”,而且还用字符串参数告诉它 “如何”制作这个 String。 当然, String并不是唯一的类。Java还带了很多现成的类。更重要的是 你还可以创建你自己的类。实际上,Java编程基本上就是在创建类,而 这正是本书要教给你的 数据存在哪里 对程序运行时各部分是如何展开的—特别是内存是如何分配的,作一个 直观的描述还是很有必要的。数据可以存储在以下六个地方: 1.寄存器( registers)。这是反映最快的存储,因为它所处位置不同:在处理 器里。不过寄存器的数量非常有限,所以它是由编译器分配的。你非但 不能直接控制寄存器,甚至连它存在的证据也找不到 栈( stack)。位于“常规内存区( general random- access memory area)”里, 处理器可以通过栈指针( stack pointer)对它进行直接访问。栈指针向下移 就创建了新的存储空间,向上移就释放内存空间。这是仅次于寄存器的 最快、最有效率的分配内存的方法。由于Jaa编译器必须生成能控制栈 指针上移和下移的代码,所以程序编译的时候,那些将被存储在栈中的 数据的大小和生命周期必须是已知的。这使得程序的灵活性收到了限 制,所以尽管Java把某些数据——特别是对象的 reference存放在栈里, 但对象本身并没有放在栈里。 3.堆(heap)。这是一段“多用途的内存池”( general- purpose pool of memory,也在内存里面),所有Java对象都保存在这里。同栈不同,堆 的优点是,分配空间的时候,编译器无需知道该分配多少空间,或者这 些数据会在堆里呆多长时间。因此使用堆的空间会比较灵活。只要你想 创建对象,用new就行了,程序执行的时候自会在堆里分配空间。当然 第3页共26页shhgs@wgqqh.com ￾ 3 ✁ ✂ 26 ✁ X^ ˈg, Java (3×1m(1#‰cŠÝEˆE‹Œ/9Q( …‰%&f^·Ž ¡'(ˆ3†™ˆ(µ¥¥%& f^   ~ reference u ¡‰€J¶k(¥,J ¡‰ˆ new ‘³Q1 ‘³ new (¹’ ͬ~3׏( Y†(¥ÏDEFJ•â* ¡ÝEˆ String s = new String("asdf"); AXWXͬ~3׏( StringÏ àˆ‰cŠ O#A ÍÄÏ1 × String  String žX™3(Java d,ŠVíŽ(%( ¡ÝE~¡ý þ(ñ`J Java áâG JF~ à T %š¬¡(  ¥âF†&›Ĝ(1žŸ{Ä( 13× Ò (¡Šm'%(OPÝE{¢FEŽ£×rµ 1. (registers) ¤¥b¦({¢ æ™ADB§¨X‡FB¢ fËX^©{f(Oª¯·m« DEA,áf(¡¯ X;ÒUN©{f JKkA{F(¬P[­Xg 2. (stack)§)Í·®Ÿ{¯ (general random-access memory area)ÏË B¢fÝE^°Z[(stack pointer)¥A%&ÒU±²°Z[Ž³ ~,({¢´4 J³µkŸ{´4 ¨)©{f( b¦¶ bmØ·(Ÿ{(µ,) Java áf'(0Ž;N° Z[J³Ž³(¸€ DEâFá(M Y̹{¢F°*( OP(º0»¼@'(ô½( ç‰âF(¾¿#Àg,« DEÁ Java P2ÌOP1ž¥( reference {kF°Ë ¥ pžœmkF°Ë 3. (heap) 3ÃÍVˆÄ(Ÿ{ÅÏ(general-purpose pool of memory [FŸ{˶) Dm Java ¥Æ|{F ˇ°X‡ Æ (ÇC ´4(M áfÜî½twVÈ´4 Yš ÌOPºFÆËÉVÊ4æòçˆÆ(´4º8C¾¿ó%¡| ~¥ ˆ new &, âFË&(MýºFÆË´4 
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有