java代码格式 java代码格式化的快捷键设置

什么是Java字节码?它是程序的一种低级表示java代码格式 , 可以运行于Java虚拟机上 。将程序抽象成字节码可以保证Java程序在各种设备上的运行
Java号称是一门“一次编译到处运行”的语言,从我们写的java文件到通过编译器编译成java字节码文件(.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件 。不论该字节码文件来自何方,由哪种编译器编译,甚至是手写字节码文件 , 只要符合java虚拟机的规范,那么它就能够执行该字节码文件 。
JAVA程序的运行
因为Java具有跨平台特性,为了实现这个特性Java执行在一台虚拟机上,这台虚拟机也就是JVM , Java通过JVM屏蔽了不同平台之间的差异,从而做到一次编译到处执行 。JVM位于Java编译器和OS平台之间,Java编译器只需面向JVM,生成JVM能理解的代码 , 这个代码即字节码 , JVM再将字节码翻译成真实机器所能理解的二进制机器码 。
字节码是怎么产生的?
我们所编写的程序都是.java格式,通常在执行的时候也许点击一下eclipse的运行键就可以在控制台看到运行结果 , 但是也可以更酷一些 , 如果java代码格式你装了JDK , 那就可以直接在以命令行的方式编译运行你的.java文件 , 编译后会形成.class文件,这个.class文件即字节码 。
字节码怎么解读?
上图是编译好的字节码文件,即一堆16进制的字节,如果使用IDE去打开,也许看到的是已经被反编译的我们所熟悉的java代码,但这才是纯正的字节码
这里只介绍字节码由哪些部分组成, 具体的意思自行百度或者看文尾的连接, 有较为详细的讲解
上图即字节码文件的组成部分, Class文件的结构不像XML等描述语言那样松散自由 。由于它没有任何分隔符号,
所以,以上数据项无论是顺序还是数量都是被严格限定的 。哪个字节代表什么含义,长度是多少,先后顺序如何,都不允许改变,如上图左侧即每一部分规定的长度
魔数(Magic Number)
魔数是用来区分文件类型的一种标志,一般都是用文件的前几个字节来表示 。
比如0XCAFE BABE表示的是class文件,那么有人会问,文件类型可以通过文件名后缀来判断?。渴堑? ,但是文件名是可以修改的(包括后缀),那么为了保证文件的安全性,将文件类型写在文件内部来保证不被篡改 。
至于为什么是CAFE BABE估计大家也能猜到, 程序员与咖啡的不解之缘
版本号(Version)
版本号含主版本号和次版本号,都是各占2个字节 。在此Demo种为0X0000 0033 。其中前面的0000是次版本号,后面的0033是主版本号 。通过进制转换得到的是次版本号为0,主版本号为51 。高版本的JDK能向下兼容以前版本的Class文件,但不能运行以后版本的Class文件,即使文件格式未发生任何变化.这就是target参数的用处 , 可以在使用JDK 1.7编译时指定-target 1.5
常量池(Constant Pool)
常量池是Class文件中的资源仓库, 量池中主要存储2大类常量:字面量和符号引用 。字面量如文本字符串 , java中声明为final的常量值等等 , 而符号引用如类和接口的全局限定名,字段的名称和描述符,方法的名称和描述符 。常量池是一个表结构,在表的内容前有一个类型的计数器,表示常量池的长度
上面的表中描述了11中数据类型的结构,其实在jdk1.7之后又增加了3种(CONSTANT_MethodHandle_info,CONSTANT_MethodType_info以及CONSTANT_InvokeDynamic_info) 。这样算起来一共是14种
访问标志(Access_Flag)
访问标志信息包括该Class文件是类还是接口,是否被定义成public,是否是abstract,如果是类,是否被声明成final 。通过上面的源代码,我们知道该文件是类并且是public 。
0x 00 21:是0×0020和0×0001的并集 。其中0×0020这个标志值涉及到字节码指令
类索引(This Class Name)
类索引用于确定类的全限定名
0×00 03 表示引用第3个常量,同时第3个常量引用第19个常量,查找得”com/demo/Demo” 。#3.#19
父类索引(Super Class Name)
0×00 04 同理:#4.#20(java/lang/Object)
接口索引(Interfaces)
通过上边字节码图可以看到,这个接口有2 n个字节,前两个字节表示的是接口数量,后面跟着就是接口的表 。我们这个类没有任何接口,所以应该是0000 。果不其然,查找字节码文件得到的就是0000 。
字段表集合(fields)
字段表用于描述类和接口中声明的变量 。这里的字段包含了类级别变量以及实例变量 , 但是不包括方法内部声明的局部变量 。接下来就是2 n个字段属性 。我们只有一个属性a,所以应该是0001 。查找文件果不其然是0001 。
该区域含有字段的访问标志, 访问权限, 字段的名称索引, 字段的描述符索引, 属性表
描述符的作用就是用来描述字段的数据类型、方法的参数列表和返回值 。而属性表就是为字段表和方法表提供额外信息的表结构 。对于字段来说 , 此处如果将字段声明为一个static final msg = "aaa"的常量,则字段后就会跟着一个属性表,其中存在一项名为ConstantValue,指向常量池中的一个常量,值为的"aaa" 。
方法(methods)
包含访问标志表, 方法名索引 , 方法描述符索引, 属性表数量,等
Attribute
0×0001 :同样的,表示有1个Attributes了 。
0x000f : #15(“SourceFile”)
0×0000 0002 attribute_length=2
0×0010 : sourcefile_index = #16(“Demo.java”)
SourceFile属性用来记录生成该Class文件的源码文件名称 。
JAVA程序编写的文件是什么格式的JAVA
程序编写的源文件(源代码)是以".java"为结尾的,JVM(JAVA虚拟机解析的文件)是以".class"为结尾的,".class"文件就是java的可执行文件,同.exe文件具有同等的效果,.class文件采用的是魔力数字存储,同时为了在不同的CPU下运行,规定了字节的保存形式,采用大端字节顺序(BIG_ENDIAN)来保存的 。而且".class"文件里面包含有编译器的版本以及兼容性数据!
java文件格式是什么?Java一般存在两种文件格式 , 如下:
1.*.java文件是保存源代码的文本文件 (*代表类名)
使用 javac *.java可以编译该文件
使用 java *可以运行该类
2.*.class是用于保存 Java类的 二进制编码以及Class对象,每一个 Java类都有一个解释该类特征的 Class对象 。*.jar文件 是一种压缩文件格式
java源程序什么格式Java程序使用下列文件后缀java代码格式:
文件类别
文件后缀
Java源文件
.java
Java字节码文件
.class
2.2 常用文件名(CommonFile Names)
常用java代码格式的文件名包括:
文件名
用途
GNUmakefile
makefiles的首选文件名 。java代码格式我们采用gnumake来创建(build)软件 。
README
概述特定目录下所含内容的文件的首选文件名 。
3. 文件组织(FileOrgnization)
一个文件由被空行分割而成的段落以及标识每个段落的可选注释共同组成 。超过2000行的程序难以阅读,应该尽量避免 。“Java源文件范例”提供java代码格式了一个页面布局合理的Java程序范例 。
【java代码格式 java代码格式化的快捷键设置】关于java代码格式和java代码格式化的快捷键设置的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读