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.javaC:\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>notepadC:\Users\wangchun>aa
'aa' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
  • 设置临时path(只在CMD命令行开启阶段有效,关闭后失效)
    • set path=xx
    • set path=xx;%path%
C:\Users\wangchun>set path=aaC:\Users\wangchun>path
PATH=aaC:\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
错误: 找不到或无法加载主类 HelloC:\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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打造Github首页的动态飞线效果

一、导语 Github首页的地球动态飞线,大家都比较熟悉吧 二、分析 由大量随机的3点构造出贝塞尔曲线,然后开始从起点到终点的飞行后,然后再从起点到终点的消失,就此完成整个过程 三、基础代码 createCurve(startPoint, endPoint…

unity 2d 入门 飞翔小鸟 死亡闪烁特效(十三)

一、c#脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Bling : MonoBehaviour {public Texture img;public float speed;public static bool changeWhite false;private float alpha0f;// Start is called before the fi…

芯片量产导入知识

什么是芯片量产 从芯片功能设计到生产制造、测试等环节,每一个环节都至关重要。 对于保障大规模发货后芯片指标表现的一致性,以及产品应用生命周期内的稳定性和可靠性,需要考虑多种因素。以下是一些相关的观点: 可量产性设计&am…

Stable Diffusion 系列教程 - 2 WebUI 参数详解

Stable Diffusion 的整个算法组合为: UNet VAE 文本编码器 UNet:就是我们大模型里的核心。 文本编码器:将我们的prompt进行encoder为算法能理解的内容(可以理解为SD外包出去的项目CLIP)。 VAE:对UNet生…

【牛牛送书 | 第三期】《一本书讲透Java线程:原理与实践》带你深入JAVA多线程

目录 摘要: 多线程对于Java的意义 为什么Java工程师必须掌握多线程 Java多线程使用方式 如何学好Java多线程 参与方式🥇 摘要: 互联网的每一个角落,无论是大型电商平台的秒杀活动,社交平台的实时消息推送&#x…

Qt槽函数不响应不执行的一种原因:ui提升导致重名

背景: 一个包含了组件提升的ui,有个按钮的槽函数就是不响应,于是找原因。 分析: 槽函数的对应一是通过connect函数绑定信号,二是on_XXX_signal的命名方式。界面上部件的槽函数通常是第二种。 我反复确认细节&#…

张正友相机标定法原理与实现

张正友相机标定法是张正友教授1998年提出的单平面棋盘格的相机标定方法。传统标定法的标定板是需要三维的,需要非常精确,这很难制作,而张正友教授提出的方法介于传统标定法和自标定法之间,但克服了传统标定法需要的高精度标定物的缺点,而仅需使用一个打印出来的棋盘格就可…

kafka学习笔记--如何保证生产者数据可靠、不重复、有序

本文内容来自尚硅谷B站公开教学视频,仅做个人总结、学习、复习使用,任何对此文章的引用,应当说明源出处为尚硅谷,不得用于商业用途。 如有侵权、联系速删 视频教程链接:【尚硅谷】Kafka3.x教程(从入门到调优…

掌握PyTorch数据预处理(一):让模型表现更上一层楼!!!

引言 在PyTorch中,数据预处理是模型训练过程中不可或缺的一环。通过精心优化数据,我们能够确保模型在训练时能够更高效地学习,从而在实际应用中达到更好的性能。今天,我们将深入探讨一些常用的PyTorch数据预处理技巧,…

Linux系统编程:进程间通信总结

管道 在Linux中,管道是一种进程间通信方式,它允许一个进程(写入端)将其输出直接连接到另一个进程(读取端)的输入。从本质上说,管道也是一种文件,但它又和一般的文件有所不同。 具体…

Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

12.9_黑马数据结构与算法笔记Java

目录 057 多路递归 e03 杨辉三角2 thinking:二维数组的动态初始化? 057 多路递归 e03 杨辉三角3 058 链表 e01 反转单向链表1 058 链表 e01 反转单向链表2 058 链表 e01 反转单向链表3 递归 058 链表 e01 反转单向链表4 为什么是returnn1呢&…

【Cisco Packet Tracer】路由器 NAT实验

NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad。 静态转换是指内部本地地址一对一转换成内部全局地址,相当内部本地的每一台PC都绑定了一个全局地址。一般用于在内网中对外提供服务的服务器。 [3] 动态转换是指…

改进YOLOv8注意力系列一:结合ACmix、Biformer、BAM注意力机制

🗝️改进YOLOv8注意力系列一:结合ACmix、Biformer、BAM注意力机制 代码ACmixBiFormerBAMBlock加入方法各种yaml加入结构本文提供了改进 YOLOv8注意力系列包含不同的注意力机制以及多种加入方式,在本文中具有完整的代码和包含多种更有效加入YOLOv8中的yaml结构,读者可以获…

Mysql索引一篇就够了

索引 定义 索引是对数据库表中一列或者多列的值进行排序的结构。 目的 数据库索引好比一本书的目录,提高查询效率。但是为表设置索引要付出相应的代价: 增加了数据库的存储空间 在插入和修改时需花费更多的时间(因为索引也要随之变动&#…

C++相关闲碎记录(5)

1、容器提供的类型 2、Array Array大小固定&#xff0c;只允许替换元素的值&#xff0c;不能增加或者移除元素改变大小。Array是一种有序集合&#xff0c;支持随机访问。 std::array<int, 4> x; //elements of x have undefined value std::array<int, 5> x {…

渗透测试——七、网站漏洞——命令注入和跨站请求伪造(CSRF)

渗透测试 一、命令注入二、跨站请求伪造(CSRF)三、命令注入页面之注人测试四、CSRF页面之请求伪造测试 一、命令注入 命令注入(命令执行) 漏洞是指在网页代码中有时需要调用一些执行系统命令的函数例如 system()、exec()、shell_exec()、eval()、passthru()&#xff0c;代码未…

基于ssm在线云音乐系统的设计与实现论文

摘 要 随着移动互联网时代的发展&#xff0c;网络的使用越来越普及&#xff0c;用户在获取和存储信息方面也会有激动人心的时刻。音乐也将慢慢融入人们的生活中。影响和改变我们的生活。随着当今各种流行音乐的流行&#xff0c;人们在日常生活中经常会用到的就是在线云音乐系统…

走迷宫(详细分析)

目录 一、课题描述 输入样例&#xff1a; 输出样例&#xff1a; 二、需求分析 输入的形式和输入值的范围&#xff1a; 输出的形式&#xff1a; 程序所能达到的功能&#xff1a; 三、概要设计 四、流程图 五 、代码详细注释 六、测试数据和结果 一、课题描述 以一个…

freeswitch webrtc video_demo客户端进行MCU的视频会议

系统环境 一、编译服务器和加载模块 二、下载编译指定版本video_demo 三、配置verto.conf.xml 1.修改配置文件 2.重新启动 四、MCU通话测试 1.如何使用video_demo 2.测试结果 五、MCU的通话原理及音频/视频/布局/管理员等参数配置 附录 freeswitch微信交流群 系统环境 lsb_rel…