仓酷云

标题: JAVA教程之java假造机进修条记2 [打印本页]

作者: 逍遥一派    时间: 2015-1-18 11:50
标题: JAVA教程之java假造机进修条记2
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。条记
11.数组数组也是类的对象。具有不异范例和维数的数组属于统一个类(不论长度只看维数)。数组的长度属于对象实例。多维数组也是一维数组。如二

维数组,即为一个一维数组,该一维数组的每一个元素是一个数组的援用。数组和一般对象一样也存储在堆中。数组名为数组的援用,经由过程索引即数组标号来会见数组内容。

12.非常在java栈帧的帧数据区内保留有针对该办法的非常表的援用。非常表纪录了该办法的字节码(*.class)受catch子句回护的局限(即try子句里的

字节码)。当某个办法抛出非常时,假造机在对应的非常表中寻觅婚配的catch子句,并将把持权交给catch子句中的代码。

13.java实行引擎完成平台有关性,以java办法帧里的操纵数栈为中央,将部分变量数组看成cpu的存放器。每操纵一个数据都要压人操纵数栈,然后前往至部分

变量区。java假造机划定强范例转换,即低精度能够隐式转换到高精度,高精度必需强迫转换到低精度。

14.线程线程即存在于历程中的某个实行体。每一个线程必需恪守对象锁定,线程守候和关照。对象锁定使线程互斥的会见对象资本。守候和关照则是恪守线程公道调剂以到达统一个目标。java对象经由过程指令集到达上锁目标,同过承继

object类的wait(),notify(),notifyall()办法来守候和关照。当某个线程挪用某个对象的wait()办法时,该线程被堵塞,并到场到该对象的线

程堵塞行列中,直到另外一个线程挪用统一对象的关照办法,才干叫醒堵塞行列中的线程。

15.常量池常量池用来寄存范例的各类信息,包含范例的各类间接常量,和对其他范例,字段,办法的标记援用。常量池分为两种,存储在.class字节码中的常量池和存储在办法区中的运转经常量池。常量池以出口情势(相似于中止向量表)呈现,每一个出口都指向一个表,表中存储常量的信息。但从常量池的出口的标记位就能够判别对应的表

中存储的常量范例。常量池出口以一个标记位入手下手,该标记位唆使该常量的范例。每一个出口对应一个表,该表以标记_info开头,表中寄存常量的紧缩情势。常量池除寄存间接常量外还包容以下几种标记援用:类和接口的全限制名。字段称号和形貌符(该形貌符是一个唆使字段范例的字符串。字段是一个类或接口的类变量或实例变量)。办法称号和形貌符(该形貌符唆使办法前往范例,参数范例,数目,按次)。

运转时,假造机用常量池的全限制名和办法,字段的形貌符来创建类与类的干系。

常量池仅仅是一个援用和形貌符的汇合,其实不承受任何赋值操纵。

一切对象的创立,办法和类变量的挪用均要从常量池中猎取信息,但实例变量的挪用从堆里取得。(料想)

标记援用是由假造机剖析后失掉详细的地点来利用。

常量池剖析就是将常量池中的标记援用交换成间接援用。

当要利用某个类的办法或字段时,起首从常量池中找到该办法或字段的标记援用,然落后行剖析,找到其物理地点。

把代码中呈现的各类标记援用,类与类的接洽,举行常量池剖析,叫做静态毗连。

16.常量池布局常量池由良多狠多的单位构成,每个单位都形如(出口|内容),会见常量池单位时经由过程索引找到出口,然后会见其内容。但偶然单位的内容也

多是一个常量池出口(好比类或接口的常量池单位,出口包括该类的标记援用即constant_class_info,而内容则指向一个

constant_utf8_info的常量池单位,该单位里寄存了该类的全限制名)。而间接常量如int,float等,内容处就是常量的值。

17.办法区的布局办法区存储一切关于范例,接口的信息。办法区包括:

常量池:存储范例的间接常量和一切的字段,办法,其他范例的标记援用(仅仅是援用,其实不寄存详细信息)。

字段信息:一切声明的字段(包含字段名,范例,润色符)。

办法信息:一切界说的办法(包含办法名,前往范例,润色符,办法的字节码,办法栈帧的巨细,办法的非常)。

类变量信息:假造机在办法区中为一切类变量分派空间,今后的初始化,赋值等操纵也在办法区中举行,以便为一切类实例共享。

为进步会见速率,假造机在办法区中为每一个非笼统类设置了一个办法表,该表是一个数组,每一个元素是一个办法的间接援用。当类的对象挪用

办法时,就在办法表中搜刮(笼统类没有实例,以是不必挪用办法,以是没无方法表)。

18.堆堆寄存类的实例和数组(包含实例变量,指向对应办法区中类数据的援用)。

19.一个例子classtest{publicstaticvoidmain(stringargs[]){stringa=newstring("hello");stringb=newstring("hello");stringc="hello";stringd="hello";}}则a==b前往false,c==d前往ture。由于:==对照两边是不是是统一个对象。

起首:stringa=newstring("hello")stringb=newstring("hello")a和b分离各改过建了hello的对象和援用变量,即在堆中有两个hello,他们各自的援用是a和b。

而:stringc="hello"stringd="hello"先创建一个字符串类实例hello,再创建两个字符串援用变量c和d,然后让c和d都指向入手下手创建的hello实例。因而c和d指向的是统一个对象。

多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
作者: 灵魂腐蚀    时间: 2015-1-21 15:59
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
作者: 再现理想    时间: 2015-1-26 06:10
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: admin    时间: 2015-1-29 09:46
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 逍遥一派    时间: 2015-2-1 10:13
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 若天明    时间: 2015-2-7 03:08
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 仓酷云    时间: 2015-2-16 10:08
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 不帅    时间: 2015-3-1 02:19
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 透明    时间: 2015-3-7 08:15
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
作者: 柔情似水    时间: 2015-3-9 23:49
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 莫相离    时间: 2015-3-11 08:20
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 金色的骷髅    时间: 2015-3-17 23:56
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 只想知道    时间: 2015-3-25 07:54
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者: 变相怪杰    时间: 2015-3-30 23:27
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者: 活着的死人    时间: 2015-4-1 04:15
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者: 精灵巫婆    时间: 2015-4-1 17:53
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 深爱那片海    时间: 2015-4-4 08:16
是一种突破用户端机器环境和CPU
作者: 小妖女    时间: 2015-4-6 18:31
是一种突破用户端机器环境和CPU
作者: 再见西城    时间: 2015-4-8 05:54
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 简单生活    时间: 2015-4-18 21:54
是一种使用者不需花费很多时间学习的语言
作者: 第二个灵魂    时间: 2015-4-22 06:00
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2