java代码编译顺序,编译器执行Java代码顺序
java程序类的编译顺序和运行顺序一样吗
先后顺序如下! 1.静态块 2.块 3.构造器 4.父类构造器 运行顺序为: 1. 静态块 2. 父类构造器 3. 本类中的块 4. 本类的构造器
创新互联服务项目包括夏津网站建设、夏津网站制作、夏津网页制作以及夏津网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,夏津网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到夏津省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
java工作原理
Java工作原理
由四方面组成:
(1)Java编程语言
(2)Java类文件格式
(3)Java虚拟机
(4)Java应用程序接口
当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类 ,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用 。
Java编译顺序的问题
存在父类时对象的实例化先编译父类;
如果子类没有实现父类的接口,属于语法错误,无法通过编译;
子类没有实现父类的接口是子类的错,父类没有错,即使不存在子类,父类也是可以编译得过的。
你的答案应该选B:
但是,实际编译是这样:
如果你直接javac Square.java,语法检查未通过,编译器将不工作;而正确编译时将得到父类与子类的class文件。
如果你先javac Shape.java,将得到Shape.class,再执行javac Square.java(未实现接口的)时,你仍将只会看到Shape.class。
JDK中的javac,java,appletviewer各有什么作用,要详细
javac:Java编译器,将Java源代码(java后缀)换成字节码文件(class后缀)。
我们编写的java程序并不是基于某一个软硬件平台,而是基于使用版本的JDK提供的“虚拟”系统(JVM)提供的API方法,因此要把它(java后缀文件)翻译成JVM能能识别的class字节码文件
java:Java解释器,执行字节码文件(class后缀文件,运行它就算真正在系统上运行java程序了)。
JVM根据不同的软硬件系统提供或支持的功能统一虚拟化了一系列的API方法,再根据指定的class文件执行这些API方法
因此java工作的顺序是:1.编写java源代码(java后缀)2.通过javac将java源代码编译为字节码文件(class后缀)3.将程序迁移到到具体要执行的机器上(你现在一般就是在自己的机器上)后用java执行相应的字节码文件这个java程序就能正确执行了。
appletviewer(小程序浏览器):没什么了解,你自己看看吧
什么是Java代码的编译与反编译?
Java代码的编译与反编译
2017-02-21Hollis数盟
一、什么是编译
1、利用编译程序从源语言编写的源程序产生目标程序的过程。
2、用编译程序产生目标程序的动作。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
二、什么是反编译
计算机软件反向工程(Reverseengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,某些特定情况下可能推导出源代码。反编译作为自己开发软件时的参考,或者直接用于自己的软件产品中。
三、Java类的编译与反编译
我们在最初学习Java的时候,会接触到两个命令:javac和java,那个时候我们就知道,javac是用来编译Java类的,就是将我们写好的helloworld.java文件编译成helloworld.class文件。
class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Javaclass文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。
那么反编译呢,就是通过helloworld.class文件得到java文件(或者说是程序员能看懂的Java文件)
四、什么时候会用到反编译
1、我们只有一个类的class文件,但是我们又看不懂Java的class文件,那么我们可以把它反编译成我们可以看得懂的文件。
2、学习Java过程中,JDK的每个版本都会加入越来越多的语法糖,有些时候我们想知道Java一些实现细节,我们可以借助反编译。
五、反编译工具
1、javap
2、Jad:官网(墙裂推荐)
客户端:
可以在官网下载可执行文件,找到对应的操作系统的对应版本,然后进行安装使用。
因为我使用的是linux操作系统,所以我下载的是Linux版本的工具,这个工具下载好之后会有一个执行文件,只要在执行文件所在目录执行./jadhelloworld.class就会在当前目录下生成helloworld.jad文件,该文件里就是我们很熟悉的Java代码
Eclipse插件:
下载地址在官网下载插件的jar包,然后将jar包放到eclipse的plugins目录下‘在打开Eclipse,Eclipse-Window-Preferences-Java,此时你会发现会比原来多了一个JadClipse的选项,单击,在Pathtodecompiler中输入你刚才放置jad.exe的位置,也可以制定临时文件的目录。当然在JadClipse下还有一些子选项,如Debug,Directives等,按照默认配置即可。基本配置完毕后,我们可以查看一下class文件的默认打开方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我们可以看到class文件的打开方式有两个,JadClipse和Eclipse自带的ClassFileViewer,而JadClipse是默认的。全部配置完成,下面我们可以查看源码了,选择需要查看的类,按F3即可查看源码
对比分析Java与其它高级语言的编译和运行过程,说明Java具有平台独立性的原因?
因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。
而C/C++不可以跨平台的原因就是编译后的代码在特定的硬件上可以直接执行,换个硬件平台这些代码就不能被执行了。不过正是因为可以直接执行,所以C/C++程序的执行效率要比Java程序高
网站栏目:java代码编译顺序,编译器执行Java代码顺序
分享链接:http://myzitong.com/article/heseii.html