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[]字节组解码为对应编码方式的字符串。
分享到:
相关推荐
- **Java字节码文件**:编译后的文件,以`.class`为后缀。 #### 常用文件名 - **GNUmakefile**:用于自动化构建过程。 - **README**:项目简介和使用说明。 - **LICENSE**:版权和许可信息。 - **AUTHORS**:贡献者...
- **概念**:JVM是Java运行时环境的核心组件,负责将Java字节码转换成本地机器指令执行。它是实现Java可移植性的关键。 - **工作原理**:Java程序首先被编译成字节码(.class文件),然后由JVM加载并执行。这种两步...
4. Java 编译器将 Java 程序转换为字节码文件,而不是可执行代码、目标代码或机器代码。 5. Java 源文件的扩展名是 `.java`。 二、Java 语言的特点 1. Java 语言的跨平台性是指用 Java 编写的应用程序编译后不用...
**知识点**: 要编译一个 Java Application 源程序文件(如 `MyJavaApplication.java`),首先使用 `javac MyJavaApplication.java` 命令进行编译,然后使用 `java MyJavaApplication` 命令来运行编译后的字节码文件...
- **javac**: Java编译器,用于将Java源代码编译成字节码(.class文件)。 - `-g`: 生成调试信息。 - `-g:none`: 不生成调试信息。 - `-g:{lines,vars,source}`: 仅生成部分调试信息。 - `-O`: 执行优化,可能...
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后,你的计算机就可以执行Java字节码(.class文件),这些字节码是由Java编译器将源代码(.java文件)编译而成的。如果你只是需要运行Java程序,那么只需要安装JRE即可,它占用的空间相对较小。 ...
**答案**:Java虚拟机(JVM)是一种虚拟机实现,允许Java字节码在任何支持它的平台上运行。JVM的主要职责是执行存储在`.class`文件中的Java字节码,这些文件是由Java编译器生成的。JVM还负责内存管理、垃圾回收和...
**JVM** (Java虚拟机)是执行Java字节码的运行时环境。文档提到JVM如何通过`ClassLoader`加载类: - `ClassLoader`负责加载Java程序中的类文件。 - Java的类加载器系统确保每个类被加载一次,并且可以通过不同的类...
源代码通过Java编译器编译成字节码(.class文件),字节码文件可以在安装有Java虚拟机(JVM)的任何平台上运行。JVM负责解释执行字节码,并将其转换为特定平台的机器码。 **2. 请阅读下面程序,然后回答问题。** - **知识...
1. 开发和运行Java程序通常包括编写源代码、编译源代码(javac命令)和运行字节码(java命令)。 2. 类及类成员的访问控制符有public(公开的),private(私有的),protected(受保护的)和friendly(友好的,即包...
在实验一的文件中,可能包含了.java源代码文件、.class编译后的字节码文件,甚至可能有README文档来指导如何运行和理解代码。通过分析这些文件,学生可以深入理解Java程序的生命周期,从编写源代码到编译、运行的全...
- **程序计数器**:程序计数器是一块较小的内存空间,当前线程所执行的字节码的行号指示器。线程私有,每条线程都有自己的程序计数器。 - **本地方法栈**:本地方法栈与虚拟机栈所发挥的作用是非常相似的,其区别...
54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...
54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...
14. 简述synchronized和java.util.concurrent.locks.Lock的异同 ? 11 15. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 11 16. abstract class和interface有什么区别? 12...
- **安全性**:通过字节码校验、安全异常处理等机制提高系统的安全性。 - **垃圾回收机制**:自动管理内存,减少内存泄漏的风险。 - **高性能**:通过即时编译技术(JIT)等手段提高程序执行效率。 - **丰富的...
54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...