1-2、Java环境搭建

语雀原文链接

文章目录

    • 1、JDK安装
    • 2、Hello World
      • 2-1、Hello World示例
      • 2-2、类名和文件名
      • 2-3、注释
      • 2-4、javadoc
    • 3、环境变量
      • 3-1、Path作用
      • 3-2、classpath
      • 3-3、JAVA_HOME
    • 4、Java组成
    • 5、跨平台原理
      • 5-1、Java跨平台原理
      • 5-2、C语言的跨平台原理

1、JDK安装

  • 下载地址:https://www.oracle.com/java/technologies/downloads/
  • 选择Java8 下载即可,需要注册一个Oracle账号

image.png

  • 下载后安装就行,安装之后的jdk/bin目录如下

image.png
image.png

  • 将安装后bin路径设置到系统环境变量中,此处路径为F:\Java\jdk1.8.0_311\bin(使在任何目录都能访问javac、java)

image.png

  • 验证环境变量是否配置正确
    • java -version:查看java版本
C:\Users\wangchun>java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)

2、Hello World

2-1、Hello World示例

  • Java中大小写严格区分
  • Hello.java
/**
 * 文档注释(可以通过Javadoc命令生成文档)
 * public 公共的
 * class 类
 * Hello 类名,这个必须和文件名一致
 * {} 类的作用域
 */
public class Hello {

    // 单行注释
    // static 静态的
    // void 无返回值
    // main 主函数,程序的入口方法
    public static void main(String[] args){

        /*
         * 多行注释
         * 在控制台输出Hello World!
         */
        System.out.println("Hello World!");
    }
}
  • javac Hello.java:执行后自动生成Hello.class字节码文件
  • java Hello:JVM运行字节码文件
C:\Users\wangchun\Desktop>javac Hello.java

C:\Users\wangchun\Desktop>java Hello
Hello World!

2-2、类名和文件名

  • 一个源文件中可以有多个类,但是只能有一个类被public修饰
  • 以下代码执行会报错

public class Hello {

    public static void main(String[] args){

        System.out.println("Hello World!");
    }
}

public class Hello1 {

    public static void main(String[] args){

        System.out.println("Hello World!");
    }
}
  • 以上代码执行会报错,去除Hello1的public即可
F:\>javac Hello.java
Hello.java:24: 错误: 类Hello1是公共的, 应在名为 Hello1.java 的文件中声明
public class Hello1 {
       ^
1 个错误
  • javac之后会生成两个class文件Hello.class Hello1.class

2-3、注释

  • 注释不会参与编译,编译后产生的字节码文件中不会有注释的内容
  • 单行注释 //
  • 多行注释 /* */
  • 文档注释 /** */ 可以通过javadoc命令来提取
  • 文档注释代码例子
/**
 文档注释
 */
public class Hello {

	/**
	 main方法
	 @param args 数组
	 */
    public static void main(String[] args){

		// 单行注释
        System.out.println("Hello World!");
    }
}

2-4、javadoc

  • javadoc生成文档
F:\>javadoc -d newName Hello.java
正在加载源文件Hello.java...
正在构造 Javadoc 信息...
标准 Doclet 版本 1.8.0_311
正在构建所有程序包和类的树...
正在生成newName\Hello.html...
正在生成newName\package-frame.html...
正在生成newName\package-summary.html...
正在生成newName\package-tree.html...
正在生成newName\constant-values.html...
正在构建所有程序包和类的索引...
正在生成newName\overview-tree.html...
正在生成newName\index-all.html...
正在生成newName\deprecated-list.html...
正在构建所有类的索引...
正在生成newName\allclasses-frame.html...
正在生成newName\allclasses-noframe.html...
正在生成newName\index.html...
正在生成newName\help-doc.html...

image.png
image.png

3、环境变量

3-1、Path作用

  • window cmd命令行:path(查看当前配置的path属性)
C:\Users\wangchun>path
PATH=C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Windows\System32\OpenSSH\;
F:\Java\jdk1.8.0_311\bin;
C:\Users\wangchun\AppData\Local\Microsoft\WindowsApps;
  • 在D盘目录下输入命令notepad,尝试打开记事本,尝试在D盘目录下查找有没有记事本程序,有则打开记事本,没有则去path中保存的路径下找,有则打开记事本;没有则失败
  • 正常只有在xxx.exe所在路径在运行该命令才能运行该程序;但将该路径添加到Path中,就能在任何路径下运行该程序,Path里面存储的是环境变量,保证在任何目录下都能运行该程序
C:\Users\wangchun>notepad

C:\Users\wangchun>aa
'aa' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
  • 设置临时path(只在CMD命令行开启阶段有效,关闭后失效)
    • set path=xx
    • set path=xx;%path%
C:\Users\wangchun>set path=aa

C:\Users\wangchun>path
PATH=aa


C:\Users\wangchun>set path=bb;%path%

C:\Users\wangchun>path
PATH=bb;aa

3-2、classpath

  • 系统中有一个环境变量classpath,默认是当前目录
  • 作用:设置这个classpath路径后,在执行字节码文件的时候,就会去这个路径下寻找对应的字节码文件
  • set classpath只是临时修改,此设置会随着当前cmd的窗口关闭而消失!
  • 但如果在当前cmd中用start开启新的窗口,设置的路径在新的cmd窗口中依然有效
  • set classpath
    • 查看当前的classpath值
  • set classpath=d:\
    • 设置classpath属性,在classpath目录下(d:\路径下)查找有没有对应的class文件,如果没有就报错提示没有
  • set classpath=d:;
    • 设置classpath属性,在classpath目录下(d:\路径下)查找有没有对应的class文件,如果找不到就在Hello.java文件所在目录下查找
  • 路径后面不加分号 :执行的时候只会查找classpath路径下的文件夹,找不到就报错。
  • 路径后面加分号:先查找classpath路径下有没有,如果没有就查找当前文件夹下有没有,依然没有就报错。
C:\Users\wangchun\Desktop>set classpath
classpath=d:\

C:\Users\wangchun\Desktop>set classpath=d:\

C:\Users\wangchun\Desktop>set classpath
classpath=d:\

C:\Users\wangchun\Desktop>java Hello
错误: 找不到或无法加载主类 Hello

C:\Users\wangchun\Desktop>set classpath=d:\;

C:\Users\wangchun\Desktop>set classpath
classpath=d:\;

C:\Users\wangchun\Desktop>java Hello
Hello World!

3-3、JAVA_HOME

  • 环境变量JAVA_HOME F:\Java\jdk1.8.0_311\bin

image.png

  • 之前的PATH路径可以这样配置:%JAVA_HOME%\bin

4、Java组成

  • JRE(Java Runtime Environment):Java运行环境
    • 包括JVM和Java程序所需的核心类库等
    • 想要运行一个开发好的Java程序,计算机只需要安装JRE即可
  • JDK(Java Development Kits):Java开发工具集
    • JDK是提供给Java开发人员使用的,其中包括Java的开发工具,也包括JRE
    • 安装了JDK,就不用单独安装JRE
    • 其中的开发工具包括:编译工具javac.exe、打包工具jar.exe

image.png image.png

5、跨平台原理

5-1、Java跨平台原理

  • JVM(Java Virtual Machine):因为JVM,使得Java程序在三种操作系统上都可以执行,这就是Java程序的跨平台性,使得Java具有良好的可移植性
  • JVM是不跨平台的,Windows有Windows对应的JVM,Linux有Linux对应的JVM
  • 流程:源文件(.java) -> (编译器javac.exe) -> 字节码文件(.class) -> (JVM执行java.exe) -> 操作系统(一次编译,随处运行)

image.png

5-2、C语言的跨平台原理

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233756.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(JAVA)-IDEA导第三方包

1.下载好第三方的包 2.将jar包复制,上图中的第一个数字jar包是我们要选择的 3.模块下新建外包文件 4.将复制的jar文件粘贴进去 . 5.右键jar包将文件与jar包关联 注意:第三方库中有些名字跟java包中重名,导包时候注意不要导错了。

数据结构算法-归并排序

引言 小明和小森是超市的货架管理人员,他们每天都要确保货架上的商品摆放整齐、有序。一天,他们发现一个货架上的商品有些混乱,需要尽快进行补货。由于该货架上的商品种类繁多,不同种类的商品之间还要考虑价格、销量等因素&#…

data_loader返回的每个batch的数据大小是怎么计算得到的?

data_loader是一个通用的术语,用于表示数据加载器或数据批次生成器。它是在机器学习和深度学习中常用的一个概念。 一、data loader 数据加载器(data loader)是一个用于加载和处理数据集的工具,它可以将数据集划分为小批次&#…

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 52页论文及代码

【2023高教社杯】C题 蔬菜类商品的自动定价与补货决策 52页论文及代码 1 题目 C题蔬菜类商品的自动定价与补货决策 在生鲜商超中,一般蔬菜类商品的保鲜期都比较短,且品相随销售时间的增加而变差, 大部分品种如当日未售出,隔日就…

2023.12.10 homework

五年级一元一次方程

Autosar通信入门系列07-CanNM状态机切换详解

本文框架 1. 概述2. NM状态机时间参数及常用接口介绍2.1 涉及时间参数说明2.2 状态机切换涉及接口介绍 3 NM状态机及其切换介绍3.1 NM状态机概览3.2 NM状态机切换过程详解 1. 概述 本文为Autosar通信入门系列介绍,如您对AutosarMCAL配置,通信&#xff0…

P13 Linux进程间通信——管道

前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《Linux C应用编程(概念类)_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🛸推荐专栏3: ​​​​​​《链表_C…

什么是双亲委派模型

一、定义 双亲委派模型是 Java 类加载器的一种工作模式,通过这种工作模式,Java 虚拟机将类文件加载到内存中,这样就保证了 Java 程序能够正常的运行起来。 二、类加载器 双亲委派模型针对的是 Java 虚拟机中三个类加载器的,这三…

NSSCTF-Crypto靶场练习--第11-20题wp

文章目录 [SWPUCTF 2021 新生赛]traditional[LitCTF 2023]梦想是红色的 (初级)[SWPUCTF 2021 新生赛]crypto2[羊城杯 2021]Bigrsa[LitCTF 2023]Hex?Hex!(初级)[SWPU 2020]happy[AFCTF 2018]BASE[安洵杯 2019]JustBase[鹤城杯 2021]Crazy_Rsa_Tech[SWPUCT…

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时,不能用本地 Node.js 打开 答:因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法: 1.修改文件夹名称 2.重新下载 注意:找一…

如何使用 Explain 分析 SQL 语句?

如何使用 Explain 分析 SQL 语句? MySQL中EXPLAIN命令是我们分析和优化SQL语句的利器。 如何使用EXPLAIN来分析SQL语句,接下来有15个例子,一起学习呗 1. EXPLAIN的基本使用 EXPLAIN可以用于分析MySQL如何执行一个SQL查询,包括如…

m6A RNA甲基化MeRIP-seq测序分析实验全流程解析

甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)实验怎么做,从技术原理、建库测序流程、信息分析流程和研究套路等四方面详细介绍。 一、甲基化RNA免疫共沉淀(MeRIP-seq/m6A-seq)测序技术原理 表观转录组指RNA序列不发生改变的情况下,由RNA上的化学修饰调节基因…

股票放量成交后,大涨的概率有多少?

很多时候,经常有人会感觉,成交量突然放大5倍以上,后面的股价大概率会上涨,很多投顾班的老师也是给大家展示这样的感觉,那究竟有多大比例的上涨呢? 【文章仅是数据分析,不构成任何投资建议】 一…

如何主持一场知识竞赛抢答赛

知识竞赛主持说难不难,说简单也不简单,我就从易到难介绍一下。 入门级,题主不用练习太多其他花哨的技巧,只要注意一点,熟悉比赛流程。知识竞赛需要给所有选手一个公平流畅的答题环境,所以题主自身必须非常…

FreeRTOS的任务优先级、Tick以及状态讲解(尊敬的嵌入式工程师,不妨进来喝杯茶)

任务优先级和Tick 在FreeRTOS中,任务的优先级和Tick是两个关键的概念,它们直接影响任务的调度和执行。 任务优先级 每个任务都被分配一个优先级,用于决定任务在系统中的调度顺序。 优先级是一个无符号整数,通常从0开始&#xff0…

使用大语言模型生成自动驾驶指令代码可行吗?

大语言模型最近太火了,大家都在各个方向上应用它。自动驾驶也是当下一个热门领域,两个热门领域的结合自然非常令人期待。AIGCer在读了一些相关文献后,感觉在自动驾驶这个热点方向上应用大语言模型,也将是一个很有前途的方向。 这…

设计模式篇---享元模式

文章目录 概念结构实例总结 概念 享元模式:运用共享技术有效地支持大量细粒度对象的复用。 当系统中出现大量相同或者相似的对象时,可以考虑使用享元模式。享元模式中提供了一个享元池用于存储已经创建好的对象。享元对象能做到共享的关键是区分了内部状…

Diary22-全网最全的CSS3.0讲解

CSS学习 1.认识CSS 1.1什么是CSS CSS:Cascading Style Sheet——层叠级联样式表 CSS:表现(美化网页) 字体;颜色;边距;高度;宽度;背景图片;网页定位&…

Nginx按指定格式记录访问日志以及利用logrotate做日志轮转

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它…

springboot095学生宿舍信息的系统

springboot095学生宿舍信息的系统 源码获取: https://docs.qq.com/doc/DUXdsVlhIdVlsemdX