http://www.ibm.com/developerworks/cn/java/j-cwt02076.html (参考)
Java 平台中的类总是来自某些包。当您在 Java 源代码中引用类名称时,您或许会也或许不会真正将包限定作为名称的一部分。您总是可以包含包限定(形如 java.lang.String),但您也可以为了省事而忽略它 —— 如果类来自 java.lang包或已 import到源文件中。这种包含包限定的类名称结构就称为 “完全限定” 类名。
在实际的二进制类内部,类名称总是在一个包中指定的。但这种名称的格式与 Java 源代码中的完全限定类名略有差别,使用正斜杠 (“/”) 取代圆点 (“.”)。例如,在 String类中,名称的内部形式为 java/lang/String。如果您尝试将一个类文件作为文本输出或查看,那么通常会看到上述形式的多个字符串,每个字符串都是对某个类的引用。
采用这种内部形式的类引用是作为字段和方法描述符的一部分使用的。字段描述符指定类中定义的一个类的准确类型。所使用的表示法取决于字段是简单对象类型、简单原语类型还是数组类型。简单对象类型的表示法为,以 ‘L’ 开头,后接对象类名称的内部形式,以 ‘;’ 结尾。原语类型的表示法为,各类型使用一个单独的字母(如 ‘I’ 表示 int、‘Z’ 表示布尔型)。数组类型的表示法为,以 ‘[’ 作为数组项类型(其本身也可为数组类型)的前缀修饰符。表 1 给出了关于各字段描述符的示例,另外还列出了相应的 Java 源代码声明:
表 1. 字段描述符示例
描述符 | 源代码 |
Ljava/lang/String; | String |
I | int |
[Ljava/lang/Object; | Object[] |
[Z | boolean[] |
[[Lcom/sosnoski/generics/FileInfo; | com.sosnoski.generics.FileInfo[][] |
方法描述符结合了字段描述符,以指定方法的参数类型和返回类型。方法描述符的格式非常易于理解。以 ‘(’ 开始,后接参数的字段描述符(均一起运行),随后是 ‘)’,最后以返回类型结尾(若返回类型为 void,则以 ‘V’ 结尾)。表 2 给出了方法描述符的一些示例,同时还列出了相应的 Java 源代码声明(注意方法名称和参数名称本身并非方法描述符的一部分,所以在表中使用了占位符):
表 2. 方法描述符示例
描述符 | 源代码 |
(Ljava/lang/String;)I | int mmm(String x) |
(ILjava/lang/String;)V | void mmm(int x, String y) |
(I)Ljava/lang/String; | String mmm(int x) |
(Ljava/lang/String;)[C | char[] mmm(String x) |
(ILjava/lang/String;[[Lcom/sosnoski/generics/FileInfo;)V | void mmm(int x, String y, FileInfo[][] z) |
Java type and corresponding type signature
List<E> | Ljava/util/List<TE;>; |
List<?> | Ljava/util/List<*>; |
List<? extends Number> | Ljava/util/List<+Ljava/lang/Number;>; |
List<? super Integer> | Ljava/util/List<-Ljava/lang/Integer;>; |
List<List<String>[]> | Ljava/util/List<[Ljava/util/List<Ljava/lang/String;>;>; |
HashMap<K, V>.HashIterator<K> | Ljava/util/HashMap<TK;TV;>.HashIterator<TK;>; |
static <T> Class<? extends T> m (int n) | <T:Ljava/lang/Object;>(I)Ljava/lang/Class<+TT;>; |
C<E> extends List<E> | <E:Ljava/lang/Object;>Ljava/util/List<TE;>; |
分享到:
相关推荐
编译器(Compiler)将源代码转换为字节码,组件(Component)是GUI中的基本元素,常量(Constant)是不可变的值。构造器(Constructor)用于初始化新创建的对象。容器(Container)是组件的容器,如面板或窗口。继续...
标题中的“Unicode中文编码对照表”是指一个用于展示Unicode字符集如何表示中文字符的参考资源。Unicode是一个全球统一的字符编码标准,旨在为世界上所有的文字提供一个唯一的数字代码,使得计算机能够正确处理各种...
"U4E00【unicode万国码对照】.zip" 这个压缩包文件,显然与Unicode字符编码系统相关,特别是针对中文字符的表示。Unicode是一种广泛使用的字符编码标准,旨在为全球所有字符提供一个统一的数字代码,使得任何计算机...
可对任意“.txt”文件进行概率统计,显示字符及其概率对照表; 依概率编制Huffman码表,显示字符、对应概率及码字对照表。 编码程序 使用码表,对任意“.txt”进行Huffman编码; 统计压缩前后比特数,计算压缩比; ...
JVM指令手册是开发者理解Java字节码执行机制的重要参考资料。下面,我们将深入探讨JVM指令手册中的一些关键指令。 1. **常量推送指令**: - `nop`:不做任何操作,主要用于占位。 - `aconst_null`:将null值推送...
在给定的压缩包文件中,"UNICODE对照表"可能是以某种格式(如CSV、PDF或网页)提供的详尽的Unicode字符列表,包含了字符、码点、字符类别、名称等信息。使用这样的资源,用户可以方便地查询任何字符的相关信息,提升...
"GBK编码表.txt"和"gbk汉字编码拼音对照表21004个字全.xlsx"提供了GBK编码的具体对照,方便查找特定汉字的GBK编码。"Unicode汉字编码表.txt"和"gb18030的汉字编码.xls"则提供了Unicode和GB18030编码的对照,便于进行...
而UTF16通常使用2个或4个字节,适合内存和处理器直接处理,是许多编程语言如Java和.NET默认的字符串编码。 SBUnicode是Apple为旧版iOS(如iOS4和iOS5)引入的一种私有扩展,主要用于支持早期iPhone和iPad上的emoji...
它的工作机制包括类加载、内存管理、执行引擎、垃圾收集以及对Java字节码的解释与优化等。通过理解JVM的工作原理,开发者可以更好地优化程序性能,避免内存泄漏,以及解决各种运行时问题。 1. 类加载:JVM按照双亲...
1. **Java流的层次结构**:Java流被组织成一个层次结构,包括字节流(InputStream/OutputStream)和字符流(Reader/Writer)。字符流是基于字节流之上,专门用于处理文本数据的流,如文件的读写。 2. **字节流与...
编码表的组织方式是按照区位进行,每个字符由两个字节组成,前一个字节被称为区号,后一个字节被称为位号。 Shift JIS编码的一个显著特点是它的可变字节长度。对于ASCII字符,它只需要一个字节,而对于大多数非...
1. **创建对照表**:首先,我们需要一个包含Big5码和GB码对应关系的对照表。这个表格可以是一个二维数组,或者更高级的数据结构如哈希表,以提高查找效率。 2. **读取输入**:读取待转换的文本,将其按字符分解为...
4. **可移植性**:Java的“一次编写,到处运行”(Write Once, Run Anywhere, WORA)特性得益于其字节码(Bytecode)和Java虚拟机(JVM)的设计,使得程序可以在多种操作系统上运行。 5. **多线程**:Java内置对多...
- **UTF-16**:使用2个或4个字节表示码点,对于BMP内的字符,每个字符都用两个字节表示,这使得UTF-16在处理大多数现代语言时非常高效。UTF-16在Java和.NET等编程环境中广泛使用。 - **UTF-32**:每个码点都用四个...
3. **分析字节码**:GB2312编码的每个汉字由两个字节表示,我们可以通过遍历字节数组,每两个字节组合成一个汉字的编码。 4. **查找对应拼音**:对于每一个汉字的编码,我们可以对照GB2312码表找到对应的拼音。由于...
为了更直观地理解GB2312编码,可以参考《GB2312编码查询(16进制).pdf》这份文档,它提供了详细的编码对照表,通过16进制数值查找对应的汉字,这对于排查乱码问题和进行编码转换非常有帮助。 总的来说,深入理解GB...
在描述中提到的“源代码及对照表”,表明压缩包中可能包含了一个Java源文件(Big2Gb.java)以及一个辅助的对照表文件(bg-gb.tab)。这个对照表通常用于存储两种编码之间的映射关系,因为直接的字节对字节转换通常是...
2. **country**:这可能是一个文本文件或者数据库文件,提供了国家的三字节码和二字节码对照表。二字节码和三字节码是国际标准ISO 3166-1中用来唯一标识国家和地区的代码,通常用于数据处理和网络通信。 3. **test3...
8. **理解编译与运行过程**:Java程序需要通过编译器转换成字节码,然后由Java虚拟机(JVM)执行。书中会讲解如何编译和运行Java程序。 9. **学习基本的算法**:结合数据结构,书中可能会介绍排序、搜索等基础算法...
3. **配置文档**:《Findbugs 缺陷等级对照表.doc》帮助开发者了解不同缺陷的重要性等级。 4. **使用 Ant 运行 Findbugs**:Findbugs 提供了使用 Ant 脚本来自动化执行检查的功能,具体方法可以在其文档中找到。 综...