`
zhwayne
  • 浏览: 17729 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA字节码编码简述

阅读更多
java中所有都是unicode的编码,恐怕大家都清楚,但是这具体是哪里的编码。在一台中文windows操作系统(GBK),或英文的linux操作系统下(ISO-8859-1)下,这些编码是如何转换的。JAVA中的 String类的getBytes()方法和String类的指定编码方式的构造函数中的编码又是如何呢?

鉴于个人水平有限,这里我不做深入介绍,我也是初学者,希望路过高人留下点秘籍给俺拜读一下也好。这里只是展示一下这些编码转换的流程。

以windows中文操作系统为例,我们编写好的java文件以默认本地操作系统的编码方式进行存储(java源文件和class文件),即GBK。

当jvm需要载入相应的类时,java加载器将GBK编码的字符转换为unicode字节码,即jvm中的字节码是unicode的。

以上两个过程实际上不需要我们参与,因此只要记住对于任何平台,我们所要操作的目标都是unicode编码的字符串。


byte[] getBytes(code)
这个方法是将unicode字符串按照code指定的编码方式转换为字节数组,这里会出现转码问题,如unicode-->iso-8859-1。如果是ASCII的字符,则不会有问题,但是如果出现汉字的unicode,则得到的iso编码必然是?(63)


String(byte[],code)
按照code指定的解码方式,将byte[]字节组解码为对应编码方式的字符串。

0
0
分享到:
评论
3 楼 kokorodo 2010-09-29  
啊?class不是都是二进制编码保存的吗
2 楼 zhwayne 2009-11-29  
mycybyb 写道
开玩笑,class也是gbk的啊

所有文件都以本地编码方式保存在磁盘上,在读入虚拟机时转为unicode。
1 楼 mycybyb 2009-11-28  
开玩笑,class也是gbk的啊

相关推荐

    JAVA编码规范

    - **Java字节码文件**:编译后的文件,以`.class`为后缀。 #### 常用文件名 - **GNUmakefile**:用于自动化构建过程。 - **README**:项目简介和使用说明。 - **LICENSE**:版权和许可信息。 - **AUTHORS**:贡献者...

    看牛人如何学习JAVA

    - **概念**:JVM是Java运行时环境的核心组件,负责将Java字节码转换成本地机器指令执行。它是实现Java可移植性的关键。 - **工作原理**:Java程序首先被编译成字节码(.class文件),然后由JVM加载并执行。这种两步...

    java课后习题答案及部分作业答案借鉴.pdf

    4. Java 编译器将 Java 程序转换为字节码文件,而不是可执行代码、目标代码或机器代码。 5. Java 源文件的扩展名是 `.java`。 二、Java 语言的特点 1. Java 语言的跨平台性是指用 Java 编写的应用程序编译后不用...

    java父子资料(答案)

    **知识点**: 要编译一个 Java Application 源程序文件(如 `MyJavaApplication.java`),首先使用 `javac MyJavaApplication.java` 命令进行编译,然后使用 `java MyJavaApplication` 命令来运行编译后的字节码文件...

    21天学通java 很好的入门教材,讲解开发环境

    - **javac**: Java编译器,用于将Java源代码编译成字节码(.class文件)。 - `-g`: 生成调试信息。 - `-g:none`: 不生成调试信息。 - `-g:{lines,vars,source}`: 仅生成部分调试信息。 - `-O`: 执行优化,可能...

    java面试宝典

    77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}这有何错误? 18 79、public class ...

    JRE与JDK的区别

    当你下载并安装JRE后,你的计算机就可以执行Java字节码(.class文件),这些字节码是由Java编译器将源代码(.java文件)编译而成的。如果你只是需要运行Java程序,那么只需要安装JRE即可,它占用的空间相对较小。 ...

    Java程序员开发效率工具IntelliJ IDEA详解,附加最新京东,阿里,滴滴,美团面试题及答案

    **答案**:Java虚拟机(JVM)是一种虚拟机实现,允许Java字节码在任何支持它的平台上运行。JVM的主要职责是执行存储在`.class`文件中的Java字节码,这些文件是由Java编译器生成的。JVM还负责内存管理、垃圾回收和...

    java面试200题(1)

    **JVM** (Java虚拟机)是执行Java字节码的运行时环境。文档提到JVM如何通过`ClassLoader`加载类: - `ClassLoader`负责加载Java程序中的类文件。 - Java的类加载器系统确保每个类被加载一次,并且可以通过不同的类...

    Java模拟试卷

    源代码通过Java编译器编译成字节码(.class文件),字节码文件可以在安装有Java虚拟机(JVM)的任何平台上运行。JVM负责解释执行字节码,并将其转换为特定平台的机器码。 **2. 请阅读下面程序,然后回答问题。** - **知识...

    (部分答案)java web 复习题.docx

    1. 开发和运行Java程序通常包括编写源代码、编译源代码(javac命令)和运行字节码(java命令)。 2. 类及类成员的访问控制符有public(公开的),private(私有的),protected(受保护的)和friendly(友好的,即包...

    java课程设计

    在实验一的文件中,可能包含了.java源代码文件、.class编译后的字节码文件,甚至可能有README文档来指导如何运行和理解代码。通过分析这些文件,学生可以深入理解Java程序的生命周期,从编写源代码到编译、运行的全...

    java面试题目大全

    - **程序计数器**:程序计数器是一块较小的内存空间,当前线程所执行的字节码的行号指示器。线程私有,每条线程都有自己的程序计数器。 - **本地方法栈**:本地方法栈与虚拟机栈所发挥的作用是非常相似的,其区别...

    Java面试宝典-经典

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    java面试题大全(2012版)

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    java面试题

    14. 简述synchronized和java.util.concurrent.locks.Lock的异同 ? 11 15. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 11 16. abstract class和interface有什么区别? 12...

    2019计算机二级测试Java试卷.docx

    - **安全性**:通过字节码校验、安全异常处理等机制提高系统的安全性。 - **垃圾回收机制**:自动管理内存,减少内存泄漏的风险。 - **高性能**:通过即时编译技术(JIT)等手段提高程序执行效率。 - **丰富的...

    最新Java面试宝典pdf版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

Global site tag (gtag.js) - Google Analytics