JAVA网页编程之用Javap反编译帮你了解Java特征
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解编译Java开辟职员熟习在一个轮回中利用StringBuffer来取代串连String对象能取得最好功能。但是,多半开辟职员历来没有对照两种办法发生的字节代码的区分。在Java开辟工具包(JDK)中有一个叫做javap的工具能够告知你为何如许做能够取得最好功能。Javap将一个类和它的办法的一些转储信息输入到尺度输入。该工具不把代码反编译为java源代码,可是它会把字节代码反汇编成为由Java假造机标准界说的字节代码指令。
在你必要检察编译器为你大概给你做了甚么的时分,大概你想要看一处代码的修改对编译后的类文件有甚么影响的时分,javap相称有效。
如今以我们后面提到的StringBuffer和String作为一个例子。上面是一个专门为例子计划的类,它有两个办法,都前往一个由0到n的数字构成的String,个中n由挪用者供应。两个办法独一的区分在于一个利用String构建了局,别的一个利用StringBuffer构建了局。
publicclassJavapTip{
publicstaticvoidmain(String[]args){}
privatestaticStringwithStrings(intcount){
Strings="";
for(inti=0;i<count;i++){
s+=i;
}
returns;
}
privatestaticStringwithStringBuffer(intcount){
StringBuffersb=newStringBuffer();
for(inti=0;i<count;i++){
sb.append(i);
}
returnsb.toString();
}
}
如今让我们看看对这个类利用?Cc选项运转javap的输入。-c选项告知javap反汇编在类中碰到的字节代码。
运转体例以下:
>javap-cJavapTip
此命令的输入为:
Methodjava.lang.StringwithStrings(int)
0ldc#2
2astore_1
3iconst_0
4istore_2
5goto30
8new#3
11dup
12invokespecial#4
15aload_1
16invokevirtual#5
19iload_2
20invokevirtual#6
23invokevirtual#7
26astore_1
27iinc21
30iload_2
31iload_0
32if_icmplt8
35aload_1
36areturn
Methodjava.lang.StringwithStringBuffer(int)
0new#3
3dup
4invokespecial#4
7astore_1
8iconst_0
9istore_2
10goto22
13aload_1
14iload_2
15invokevirtual#6
18pop
19iinc21
22iload_2
23iload_0
24if_icmplt13
27aload_1
28invokevirtual#7
31areturn
假如你之前没有看过Java汇编器,那末这个输入对你来讲就会对照难明,可是你应当能够看到withString办法在每次轮回的时分都新创立了一个StringBuffer实例。然后它将已有的String确当前值追加到StringBuffer上,然后追加轮回确当前值。最初,它对buffer挪用toString并将了局赋给现有的String援用。
withStringBuffer办法与这个办法恰好相反,在每次轮回的时分withStringBuffer只挪用现有StringBuffer的append办法,没有创立新的对象,也没有新的String援用。
在这类情形下,我们已晓得了利用StringBuffer取代String是一种好的做法,可是假如我们不晓得呢?那末javap能够匡助我们找到谜底。在这里你能够看到更具体的关于String,StringBuffer的注释
你其实不会常常必要一个Java反汇编器,可是当你必要的时分,晓得你本人的呆板已有一个而且用法相称复杂的反汇编器固然是一件功德。假如你感乐趣,看书看看javap的别的选项――也许你会发明在你的情况中必要的特征。
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 是一种为 Internet发展的计算机语言 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页:
[1]
2