仓酷云

标题: JAVA网页编程之用Javap反编译帮你了解Java特征 [打印本页]

作者: 兰色精灵    时间: 2015-1-18 11:54
标题: 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简单。
作者: 精灵巫婆    时间: 2015-1-21 16:53
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 再见西城    时间: 2015-1-30 21:17
是一种为 Internet发展的计算机语言
作者: 分手快乐    时间: 2015-2-6 16:01
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者: 柔情似水    时间: 2015-2-12 23:10
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 简单生活    时间: 2015-3-3 11:03
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者: 飘灵儿    时间: 2015-3-11 10:08
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 莫相离    时间: 2015-3-18 04:07
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
作者: 谁可相欹    时间: 2015-3-24 02:11
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者: 爱飞    时间: 2015-4-1 23:10
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 海妖    时间: 2015-4-6 05:29
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
作者: 透明    时间: 2015-4-10 08:36
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者: 再现理想    时间: 2015-4-14 11:47
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
作者: 不帅    时间: 2015-4-17 03:10
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者: admin    时间: 2015-4-17 21:11
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 蒙在股里    时间: 2015-6-7 23:48
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者: 乐观    时间: 2015-6-10 01:45
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
作者: 金色的骷髅    时间: 2015-6-14 15:01
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 兰色精灵    时间: 2015-6-25 10:08
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 冷月葬花魂    时间: 2015-7-7 23:45
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。




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