javac和java的区别

本文详细讲解了Java编程中javac、java和javap命令的区别,javac负责编译Java源代码成.class,java用于执行.class文件,而javap用于反编译.class查看底层实现。通过实例演示了如何使用这些工具处理EmployeeTest.java和Employee.java文件。

javac和java的区别

1. javac 是编译一个java文件的基本命令,通过不同参数可以完成各种配置,比如导入其他类,指定编译路径等。

2. java是执行一个java文件的基本命令,通过参数配置可以以不同方式执行一个java程序或者是一个jar包。

3. javap是一个class文件的反编译程序,可以获取class文件的反编译结果,甚至是jvm执行程序的每一步代码实现。

总结:Javac是编译、Java是执行,编写Java代码后,使用Javac进行编译生成 .Class文件,.Class文件使用 Java命令 执行代码;

javac 可以将java源文件编译为class字节码文件
如 javac HelloWorld.java

运行javac命令后,如果成功编译没有错误的话,会出现一个HelloWorld.class的文件。

java 可以运行class字节码文件
如 java HelloWorld

注意java命令后面不要加.class

 


EmployeeTest.java 文件代码:
import java.io.*;
public class EmployeeTest{
 
   public static void main(String[] args){
      /* 使用构造器创建两个对象 */
      Employee empOne = new Employee("RUNOOB1");
      Employee empTwo = new Employee("RUNOOB2");
 
      // 调用这两个对象的成员方法
      empOne.empAge(26);
      empOne.empDesignation("高级程序员");
      empOne.empSalary(1000);
      empOne.printEmployee();
 
      empTwo.empAge(21);
      empTwo.empDesignation("菜鸟程序员");
      empTwo.empSalary(500);
      empTwo.printEmployee();
   }
}

Employee.java 文件代码:
import java.io.*;
 
public class Employee{
   String name;
   int age;
   String designation;
   double salary;
   // Employee 类的构造器
   public Employee(String name){
      this.name = name;
   }
   // 设置age的值
   public void empAge(int empAge){
      age =  empAge;
   }
   /* 设置designation的值*/
   public void empDesignation(String empDesig){
      designation = empDesig;
   }
   /* 设置salary的值*/
   public void empSalary(double empSalary){
      salary = empSalary;
   }
   /* 打印信息 */
   public void printEmployee(){
      System.out.println("名字:"+ name );
      System.out.println("年龄:" + age );
      System.out.println("职位:" + designation );
      System.out.println("薪水:" + salary);
   }
}

import 语句

在 Java 中,如果给出一个完整的限定名,包括包名、类名,那么 Java 编译器就可以很容易地定位到源代码或者类。import 语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如,下面的命令行将会命令编译器载入 java_installation/java/io 路径下的所有类

import java.io.*;

### `java``javac`的区别及其在Java开发中的作用 #### `javac`命令:Java源代码的编译工具 `javac`是Java语言的编译器,负责将Java源代码文件(`.java`)转换为JVM(Java虚拟机)能够识别的字节码文件(`.class`)[^1]。这个过程包括词法分析、语法分析、语义分析以及字节码生成等多个阶段。开发者在编写完Java代码后,需要使用`javac`命令进行编译,确保代码语法正确且可以被后续执行[^2]。 例如,一个简单的Java程序`HelloWorld.java`可以通过以下命令进行编译: ```bash javac HelloWorld.java ``` 该命令将生成一个名为`HelloWorld.class`的字节码文件,供后续运行使用。 `javac`还支持多种编译选项,例如`-parameters`参数可以在生成的类文件中保留方法参数名称信息,便于反射调用时获取参数名称[^3]。 #### `java`命令:Java字节码的运行工具 `java`命令用于启动Java虚拟机并运行编译后的字节码文件。它负责加载`.class`文件,验证其安全性,并执行程序的入口方法(`main`方法)。在完成编译后,开发者使用`java`命令运行程序,具体命令格式如下: ```bash java HelloWorld ``` 需要注意的是,`java`命令后应指定类名而非文件扩展名,因为JVM会自动查找对应的`.class`文件。 `java`命令不仅负责执行程序,还提供了运行时环境配置选项,例如内存管理、类路径设置等,适合在部署运行阶段使用。 #### 两者的区别 1. **功能不同** `javac`专注于将源代码编译为字节码,是开发阶段的必需工具;而`java`用于运行字节码,是程序执行的核心工具。 2. **输入输出不同** `javac`以`.java`文件为输入,生成`.class`文件作为输出;`java`以`.class`文件为输入,输出程序的执行结果。 3. **使用阶段不同** `javac`主要在开发编译阶段使用,确保代码可以被正确转换为字节码;而`java`用于测试、部署运行阶段,确保程序能够在JVM中正确执行[^2]。 4. **版本控制不同** `javac -version`用于查看当前使用的Java编译器版本,确保代码兼容性;`java -version`用于查看运行时环境版本,确保程序在目标平台上能够正常运行。 #### 示例代码:使用`javac``java`命令 ```bash # 编译Java源文件 javac HelloWorld.java ``` ```bash # 运行编译后的Java程序 java HelloWorld ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值