Java

您所在的位置:网站首页 publisher文件可以用什么打开 Java

Java

2024-07-15 12:13| 来源: 网络整理| 查看: 265

一、概述

class文件全名称为 Java class 文件,主要在平台无关性和网络移动性方面使 Java 更适合网络。该文件打破了 C 或者 C++ 等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。

通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而 class文件是可以运行在任何支持 Java虚拟机 的硬件平台和操作系统上的二进制文件。

一个典型 Java 程序产生的过程:

在这里插入图片描述

当我们对一个 Java 源程序进行 javac 编译后就会生成 class 文件。

就以 HelloWorld.java 源程序为例:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World ~~"); } }

使用 javac 编译

在这里插入图片描述

在 Java 中,JVM 可以理解的代码叫作字节码,也就是 .class 文件,它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,并且保留了解释型语言可移植的特点,而通过即时编译器(JIT)又有编译型语言执行效率高的特点。所以 Java 程序运行时比较高效,同时 Java 通过字节码文件和虚拟机之间的关系,实现了平台无关性,一次编译,各平台都可运行。

值得一提的是,不仅是 Java 源程序可以被编译成 .class 文件,有些语言也可以编译成 .class 文件,而且都可以运行在 JVM 上。

在这里插入图片描述 所以说 JVM 和语言无关,只要符合 .class 文件的规范,都可以运行。

二、打开 Class 文件 方式一:使用文本编辑器打开

我们可以使用一些 文本编辑器 来打开 .class 文件,比如 Nodpad++

在这里插入图片描述

可以看到打开之后显示的内容是一些夹杂着字符的乱码,其实文件中包含的是一些字节序列,但有些字节不能显示为一个字符,所以看起来就是乱码。

我们可以在 Nodpad++ 上下载 HEX-Editor 的插件,就能看到该文件的十六进制内容了(使用Nodepad++工具查看文件的十六进制)

方式二:编写代码读取 class 文件的内容并显示 import java.io.FileInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Scanner; public class ReadDis { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("请输入当前目录下要显示的文件名:"); String fileName = scanner.next(); FileInputStream inputStream = new FileInputStream(fileName); byte[] data = new byte[inputStream.available()]; int read = inputStream.read(data); inputStream.close(); System.out.println("文件内容:"); showASCII(data); showHex(data); } // 显示为ASCII格式 public static void showASCII(byte[] data) throws UnsupportedEncodingException { System.out.println("\r\n\t文件的ASCII内容"); String ascData = new String(data, "ASCII"); for (int i = 0; i ascData.length()) { t=ascData.length(); } String len = ascData.substring(i,t); System.out.print(len); } } // 显示为十六进制格式 public static void showHex(byte[] data) { System.out.println("\r\n\t文件的十六进制内容"); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3