从零开始:Windows命令提示符 (cmd) 和Java (万字详解)

2023年 9月 30日 51.6k 0

引言:
大二开学,Java专业课的老师要求学生们写技术文章以总结自行配置Java环境并使用cmd编译Java文件的过程。
哈哈,很早之前就看过刘欣的《对自己狠一点,开始写作吧》,当时读了后,鸡汤入肚,野心勃勃,很想开始经营自己的技术博客,可惜我当时还是太懒了,也就不了了之了。
希望这次老师布置的硬性要求可以成为我技术博客的伊始。

系统:windows10
命令行:cmd
java版本:17
在这里插入图片描述

第一部分: 介绍

1.1 为什么使用cmd?

  • 直接
  • 快速
  • 易上手
  • 看起来很酷
  • 避免依赖复杂的IDE

1.2 为什么学习Java?

大学必修课,不能不学(bushi).

学习编程而非语言,语言更像是武器,而如数据结构、编译原理才是内功。

如果你对大型企业应用、Android 开发、大数据处理或分布式系统感兴趣,专精 Java 可能是一个不错的选择。

1.2.1 Java vs. C++:

Java 是一种面向对象的编程语言,而 C++ 可以同时支持面向对象和面向过程的编程。
Java 具有内置的内存管理和垃圾回收机制,而 C++ 需要手动管理内存,这使得 Java 更容易学习和使用,也更安全。
C++ 通常用于系统级编程、游戏开发和性能密集型应用,而 Java 更适用于企业级应用、Web 开发和移动应用。

1.2.2 Java vs. Python:

Java 是一种静态类型语言,而 Python 是动态类型语言。这意味着 Java 在编译时执行类型检查,而 Python 在运行时执行。
Python 语法简单,易于学习和阅读,适用于快速原型开发和科学计算。Java 更适合大型应用和高性能要求。
Java 在企业级应用、Android 应用、大数据处理等领域有广泛应用。

1.2.3 Java vs. Go:

Go 是一种静态类型语言,设计用于简化并发编程,具有出色的性能。Java 也支持并发,但 Go 更专注于此。
Go 具有内置的垃圾回收,与 Java 类似,但更轻量级。
Java 生态系统庞大,拥有大量库和框架,适用于各种应用,而 Go 更适合构建分布式系统和网络服务。

1.3 演示cmd指令编译java(基本)

1.3.1. code_clection文件夹是我常用的存放代码的根目录,你如果嫌麻烦也可以直接在C盘上编译Java文件。

初演示1

1.3.2. windowns10下cmd的一些基本指令的演练。

  • 我这里建立文件夹是为了以后方便管理和查看,如果你没有这方面的需求,可以跳过。

初演示2

1.3.3. 创建文件并打开。

初演示3
初演示4

1.3.4.编写Java文件

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

初演示5

1.3.5.编译Java文件

在这里插入图片描述
在这里插入图片描述

第二部分: 准备工作

2.1 彻底删除旧Java配置

2.1.1 为什么(我)要删除Java的环境配置?

在这学期老师要求下载JDK之前,我曾配置过Java环境,所以我的电脑已经可以编译Java文件了,但是文件路径的习惯和现在不太一样,不方便我管理文件。
就像张三有强迫症,物件的摆放很有规矩,但是张三小时候很邋遢,现在张三要去他小时候住的地方找纪念小时候的物品,见到混乱的各种杂物,定然是不爽的。
我并不清楚Java的环境配置,也不理解过去配置环境时混乱的文件路径,不清楚为什么我没有配置JAVA_HOME环境变量却可以编译Java文件。
我选择最暴力的解法:删了重建。

2.1.2 如何彻底删除Java的环境配置?

步骤一 清理用户环境变量:
方法一 鼠标点点点:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

方法二 cmd命名行进入:
rundll32 sysdm.cpl,EditEnvironmentVariables

在这里插入图片描述
在这里插入图片描述

步骤二 卸载Java:

在这里插入图片描述
在这里插入图片描述

步骤三 验证是否成功删除Java:

在这里插入图片描述
在这里插入图片描述

步骤四 清理注册表:
  • 导航到 HKEY_LOCAL_MACHINESOFTWAREJavaSoft 路径,并删除与旧的 Java 版本相关的子项。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.2 安装和配置JDK环境

步骤一 去 Oracle官网下载

在这里插入图片描述

步骤二 选择合适的版本下载

进入 Oracle官网后,下拉到如下界面,选择一个合适的版本下载,我这次选了Windows系统下的x64 Installer (.exe),jdk为20版本。
在这里插入图片描述
在这里插入图片描述

你可能对图片上Windows下的三个版本感到好奇(如果你不感兴趣,请直接跳过。)。他们的区别如下:

  • x64 Compressed Archive (.zip):这是一个压缩归档文件,包含了 JDK 的所有文件,但没有自动安装程序。你需要手动解压缩文件,并配置环境变量以使用 JDK。这个选项适合高级用户,需要手动配置环境。
  • x64 Installer (.exe):这是一个自包含的可执行文件安装程序,用于自动安装 JDK。它将 JDK 安装到默认目录,同时配置系统环境变量,以便你可以轻松地在命令提示符中使用 Java 命令。这是最常见的下载选项,适合大多数用户。
  • x64 MSI Installer (.msi):这也是一个自包含的安装程序,但它使用 Windows Installer 技术进行安装。它与 .exe 安装程序类似,但在一些企业环境中更常见,因为它可以更好地集成到 Windows 管理和部署工具中。
  • 如果你是普通用户并且只需在个人计算机上安装 Java,选 x64 Installer (.exe) 选项,因为它足够简单。
  • 如果你是大牛(哈哈,想来大牛也不会来看我的文章),选 x64 Compressed Archive (.zip) 选项,然后手动配置。
  • 最后,如果你在企业环境中工作,可以选 x64 MSI Installer (.msi)。
  • 小插曲(你没有权限在此位置保存文件....)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    步骤三 双击JDK,下载安装

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    又一个小插曲("以下应用程序正在使用需要由此安装程序更新的文件...")

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    YES!安装完成了!

    在这里插入图片描述
    在这里插入图片描述

    第三部分: 基础知识

    3.1 第一个Java程序——HelloWorld

    java小程序如下:

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

    基于如上小程序,解释如下:

  • public class HelloWorld: 这是程序的类定义。在Java中,每个程序都需要包含一个类。类名和文件名应该相同,且每个Java程序都有一个主类(包含main方法)。

  • public static void main(String[] args): 这是Java程序的主方法。它是程序的入口点,从这里开始执行程序。让我们分解这一行代码:

    • public: 这是一个访问修饰符,表示main方法可以从程序的任何位置访问。
    • static: 这是一个关键字,表示main方法是一个静态方法,不需要创建类的实例即可调用。
    • void: 这是main方法的返回类型。void表示该方法不返回任何值。
    • main: 这是方法的名称,Java程序将从这里开始执行。
    • (String[] args): 这是方法的参数列表,String[] args 表示该方法接受一个字符串数组作为参数。这个参数通常用于传递命令行参数给程序。
  • { ... }: 大括号用于定义方法的代码块。在main方法中,大括号内包含了要执行的代码。

  • System.out.println("HelloWorld");: 这是在控制台上打印文本的语句。它使用System.out来引用标准输出流,然后调用println方法来输出文本字符串 "HelloWorld"。println会输出文本并在最后添加换行符,所以每次调用它后,下一个输出会在新行上显示。

  • 这个程序可以在控制台上打印 "HelloWorld"。要运行这个程序,你需要首先将其保存为一个后缀".java" 的文件,本文章推荐你使用cmd编译这个小程序。

    3.2 编译和运行Java程序

    • 演示如何使用cmd编译和运行Java程序。
    • 包括错误示范,分析失败的原因和解决方法。

    3.2.1 演示

    cmd命令下完成HelloWorld.java文件的编译的过程如下

  • 打开命令提示符:按下Win+R键,输入"cmd",按Enter键。

  • 导航到Java文件所在的目录:使用cd命令进入文件夹目录。

    cd ..
    cd ..
    d:
    cd D:A_Shun_Exclusivelife_ofuniversitycode_collectionJAVADOS
    

    此处是我的示例。

  • 新建Java文件:使用cd>命令。

    cd>HelloWorld.java
    
  • 打开java文件进行编写 :使用notepad命令

    notepad HelloWorld.java
    

    注:notepad命令旨在记事本格式打开文件。
    打开文件后敲键盘就行了。

  • 编译Java文件:使用javac命令。

    javac HelloWorld.java
    

    没反应?
    哈哈,没反应就对了,有的话说明你写的代码有问题。
    快看看你编写Java文件的文件夹里是不是多了个".class"文件。

  • 运行Java程序:一旦编译成功,您可以使用java命令来运行编译后的Java程序,如下所示:

    java HelloWorld
    
  • 如果一切顺利,你会在cmd窗口上看到 "HelloWorld" 。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    第四部分:进步探索cmd+java编译

    4.1 输入输出

    //SayHello.java
    import java.util.Scanner;
    
    public class SayHello {
        public static void main(String[] args) {
            // 创建一个 Scanner 对象来读取用户输入
            Scanner scanner = new Scanner(System.in);
    
            System.out.print("你的名字是: ");
         
            String name = scanner.nextLine();
    
            // 关闭 Scanner 对象
            scanner.close();
    
            System.out.println("你好, " + name + "!");
        }
    }
    
    
    

    在这里插入图片描述

    4.2 多文件编译

    • 解释多文件编译的概念和必要性。
    • 提供多文件编译的示例和演示。
    //Main.java
    public class Main {
        public static void main(String[] args) {
            HelloName hello = new HelloName();
            String message = hello.GetHelloMessage("Fu Xingshun");
            System.out.println(message);
        }
    }
    
    
    
    //HelloName.java
    public class HelloName {
        public String GetHelloMessage(String name) {
            return "Hello, " + name + "!";
        }
    }
    

    在这里插入图片描述

    )

    4.4 自定义类和头文件

    • 介绍Java中的类和方法。
    • 演示如何创建和使用自定义类。
    //Person.java
    public class Person {
        private String name;
        private int age;
    
        // 构造方法
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        // 获取姓名
        public String getName() {
            return name;
        }
    
        // 获取年龄
        public int getAge() {
            return age;
        }
    
        // 修改年龄
        public void setAge(int age) {
            this.age = age;
        }
    
        // 自定义方法
        public void introduce() {
            System.out.println("我叫" + name + ",今年" + age + "岁。");
        }
    }
    
    
    //MainSecond.java
    public class MainSecond {
        public static void main(String[] args) {
            Person person = new Person("付兴顺", 18);
    
            String name = person.getName();
            int age = person.getAge();
    
            System.out.println(name + "的年龄是:" + age);
    
            person.setAge(19);
    
            person.introduce();
        }
    }
    
    

    在这里插入图片描述

    4.5 调试

    4.5.1 jdb

    4.5.1 再配一次环境

    我懵逼,本来我下的JDK20版本,但我居然找不到JDK的文件路径,是的,我无论如何也找不到,而且也无法使用jdb命令。然后我就重安了17版本的。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    4.5.2 演示

    
    //JDBTEST.java
    
    public class JDBTEST {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            int sum = add(a, b);
            System.out.println("Sum: " + sum);
        }
    
        public static int add(int x, int y) {
            return x + y;
        }
    }
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    4.5.1 jshell

    在这里插入图片描述

    在这里插入图片描述

    结束语

    ==非常感谢您的阅读,也希望能得到您的反馈。==

    8. 联系方式

    • QQ:2897795436
    • WeChat:apple6066hcom

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论