初识Java(一)

2023-11-19


前言

计算机语言的发展史

  • 第一代:机器语言——指令以二进制代码形式存在
  • 第二代:汇编语言——使用助记符表示一条机器指令
  • 第三代:高级语言
    • 面向过程语言:C、Pascal、Fortran
    • 面向对象语言:C++(面向过程/面向对象)、Java(跨平台的纯面向对象的语言)、.net(跨语言的平台)、Python…

一、Java是什么?

  1. 是由原sun公司1995年推出的一门高级编程语言
  2. 一种面向Internet的编程语言
  3. Java程序可以在Web浏览器中运行。
  4. 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言
  5. 詹姆斯·戈士林(James Gosling)被称为“Java之父”,他是Java 技术的创始人,他亲手设计了Java语言,并开发了Java编译器和Java虚拟机。

二、应用领域、特点及核心机制

1. 应用领域

  • 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。
  • Android平台应用:Android应用程序使用Java语言编写。
  • 大数据平台开发:各类框架有Hadoop、spark、storm、flink等,这些框架以及工具大多数是用Java语言编写而成。

2. 特性及特点

特性

  • 易学
  • 是强制面向对象的
  • 分布式
  • 健壮
  • 安全
  • 体系结构中立
  • 解释型语言
  • 性能略高
  • 原生支持多线程

特点

  • 特点一:面向对象
    • 两个基本概念:类、对象
    • 三大特征:封装、继承、多态
  • 特点二:健壮性
    • 吸收了C/C++语言的特点,但去掉了其影响程序健壮性的部分(如指针),提供了一个相对安全的内存管理和访问机制
  • 特点三:跨平台性
    • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。
    • 运行原理:只要在需要运行的java应用程序的操作系统上,先安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行

3. 两种核心机制

  • Java虚拟机(Java Virtual Machine)

    • JVM是一个虚拟的计算机,负责执行指令,管理数据、内存、寄 存器
    • 对于不同的操作系统,有不同的虚拟机
    • 只有该系统提供了对应的java虚拟机,java程序才可在此平台运行
    • Java虚拟机的机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”—— write once,run anywhere
  • 垃圾收集机制(Garbage Collection)

    • 不再使用的内存空间应回收——垃圾回收
    • 在C/C++等语言中,由程序员负责回收无用内存
    • Java语言消除了程序员回收无用内存的责任,它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
    • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预
    • java程序还会出现内存泄漏和内存溢出问题吗?会

三、JDK、JRE、JVM的关系

什么是JDK、JRE?

  • JDK(Java Development Kit Java开发工具包)
    JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE,所以安装了JDK,就不用再单独安装JRE了。
    其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
    • bin目录:存放可执行文件;
    • lib(library的缩写)目录:存放Java的类库文件
    • include目录:存放演示程序;
    • jre(java runtime environment的缩写)目录:存放Java运行环境文件;
    • sample目录:帮助学习者学习的java例子;
    • src.zip目录:存放java核心类的源代码;
  • JRE(Java Runtime Environment Java运行环境)
    包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想运行一个开发好的Java程序,计算机中只需要安装JRE即可。

简单而言,使用JDK的开发工具完成的java程序,交给JRE去运行
三者的关系
JDK = JRE + 开发工具集(例如Javac编译工具等)
JRE = JVM + Java SE标准类库
JDK > JRE > JVM

四、Java环境变量配置

下载并安装JDK,因为目前主流jdk版本都在8,所以推荐jdk8(1.8)及以上版本 JDK下载地址,下载完成安装即可
安装路径尽量不要使用中文和括号,系统有可能会识别路径失败
jdk8

  1. 右击“此电脑”的“属性”选项, 选择“高级系统设置”选项

  2. 点击下面的“环境变量”选项

    (这时会出现用户变量和系统变量,如果选择用户变量下新建变量,则该变量只会应用于该用户使用时生效。如果选择系统变量下新建变量,则该变量应用于整个电脑。改规则类似于局部变量和全局变量的关系)

  3. 选择"新建按钮"设置变量名为"Java_Home"
    ”变量值“为JDK安装路径,例如”D:\chrome\Java\jdk1.8.0_321\“
    在这里插入图片描述

  4. 选择"Path",点击下面的编辑按钮,在弹出的框中选择新建添加下列两个环境变量
    %JAVA_HOME%\bin
    %JAVA_HOME%\jre\bin
    (path : windows系统执行命令时要搜寻的路径)
    在这里插入图片描述

  5. 检验安装jdk是否成功
    回到电脑桌面,按快捷键:win+R输入cmd点击确定
    分别输入java、javac、java-version三个命令检查jdk是否安装成功

五、编写我的第一个程序

用命令提示符执行java文件

  1. 新建一个记事本,命名为HelloWorld,将文件的后缀改为java,输入以下内容:

    class HelloWorld{//类名为HelloWorld
    	public static void main(String[] args){ //main方法为主方法
    		System.out.println("Hello,World!!!"); //该语句是java提供的输出方法
    	}
    
    }
    
  2. 使用cmd进入命令提示符并且找到HelloWorld.java的目录

  3. 使用javac命令将java代码编译成.class文件(字节码文件)
    命令:javac HelloWorld.java
    因为电脑无法识别java代码,所以要对java文件先编译,然后变成电脑可识别的文件再运行

  4. 使用java命令执行文件,就能输出相应结果
    命令:java HelloWorld

总结

学习Java语言开发,主要在于多去理解基础知识和熟练掌握java语法知识
本篇重点:区分jdk、jre、jvm三者的区别以及如何配置java环境变量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初识Java(一) 的相关文章

  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 西门子S7-1200 PLC选型前这些要了解

    西门子S7 1200PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200系
  • Jetson TX2刷JetPack3.3(方法二)

    官网上的刷机教程都是需要一个路由器才能刷机 这篇博客介绍如何不要路由器 只需要一个宿主机就可以刷机的教程 1 刷机准备工作 JetPack是一个x86二进制文件 不能在基于ARM的机器上运行 因此需要借助一个宿主机来刷JetPack 因此
  • 数据结构模板

    链接
  • Github-Copilot初体验-Pycharm插件的安装与测试

    引言 80 代码秒生成 AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下 取得了重大升级 GitHub Copilot发布还不到两年 就已经为100多万的开发者 编写了46 的代码 并提高了55 的编码速度 据官博
  • Quartus导出网表文件:.qxp和.vqm

    当项目过程中 不想给甲方源码时 该如何 我们可以用网表文件qxp或者vqm对资源进行保护 下面讲解这两个文件的具体生成步骤 一 基本概念 QuartusII的qxp文件为QuartusII Exported Partition 用于创建综合
  • c#float取小数点后两位_C# 保留小数点后两位(方法总结)

    最简单使用 float i 1 6667f string show i ToString 0 00 结果1 67 四舍五入 其他类似方法 string show i ToString F F2 f 不区分大小写 string show St
  • SpringBoot集成Swagger4

    Swagger是一种工具 可以帮助开发人员设计 构建 文档化和测试 RESTful Web 服务 Swagger提供了一种交互式文档格式 可以使用它来了解 API 的用法 参数 返回值等等 Spring Boot提供了集成Swagger的简
  • Servlet接口实现类

    JavaWeb 03 Servlet 02 Servlet接口实现类 1 什么是Servlet接口 有什么用 Servlet接口来自于Servlet规范中的一个接口 这个接口存在于Http服务器所提供的jar包中 Servlet接口的具体位
  • 【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

    目录 5 14Format NVM command 5 14 1Command Completion 5 18Keep Alive command 5 18 1Command Completion 5 19Lockdown command
  • 啪啪动物城 源码

    游戏地址 http www 4399 com flash 192131 htm 啪啪动物城源码 https files cnblogs com files gamedaybyday E5 95 AA E5 95 AA E5 8A A8 E7
  • Metasploit 提权篇

    声明 文中所涉及的技术 思路和工具仅供以安全为目的的学习交流使用 任何人不得将其用于非法用途以及盈利等目的 否则后果自行承担 文章目录 内核漏洞提权 enum patches模块 Windows Exploit suggester Wind
  • web服务器响应的端口号,web服务器端口号

    web服务器端口号 内容精选 换一换 Nginx Web Server场景是以Nginx作为Web Server的场景 Nginx作为Web Server 可以被配置部署为静态资源Web Server 在该配置下可以高效的进行静态资源的请求
  • python学习笔记——条件判断

    上篇 https blog csdn net qq 42489308 article details 89388218 条件判断 条件判断是通过一条或多条判断语句的执行结果 True或者False 来决定执行的代码块 在Python语法中
  • uboot分析之Makefile

    Uboot分析之Makefile 1 uboot根目录下执行 make smdk2410 config smdk2410 config unconfig MKCONFIG config arm arm920t smdk2410 samsun
  • 数据集下载OTB,VOT,UAV,鸢尾花

    OTB数据集下载百度网盘链接 链接 https pan baidu com s 1snsJF 7Sw EbKtzdvLO1nw 提取码 ls23 VOT数据集下载百度网盘链接 链接 https pan baidu com s 1UiTG1z
  • AI顶级会议列表 & ACL相关

    The First Class tier 1的conferences 其实基本上就是AI里面大家比较公认的top conference 下面同分的按字母序排列 IJCAI 1 AI最好的综合性会议 1969年开始 每两年开一次 奇数年开 因
  • 基于互补搜索技术和新颖架构设计,结合MobileNetV3主干网络,打造不同的目标检测器

    基于互补搜索技术和新颖架构设计 结合MobileNetV3主干网络 打造不同的目标检测器 目标检测是计算机视觉中的一个重要任务 随着深度学习技术的发展和神经网络的不断优化 YOLOv5已成为目前最流行的目标检测框架之一 然而 为了进一步提高
  • opengl shader 使用札记

    一 shader的使用步骤 创建shader 1 创建一个shader对象 GLuint glCreateShader GLenum shaderType 2 将shader源代码传入前面创建的shader对象 void glShaderS
  • 老嫂子的保姆级科普 选择视频剪辑软件就从阅读本文开始

    选错一款视频剪辑软件 是种什么样的体验 就好像新婚当晚 发现老婆是人妖一样 浪费了感情 又错付了青春 新手在学习视频剪辑的初期 需要花费大量精力去熟悉剪辑软件的基础功能 而软件挑选本身没有对错可言 适合自己的才是最好的 因此 本文仅从事实与
  • 初识Java(一)

    Java开发语言 前言 一 Java是什么 二 应用领域 特点及核心机制 1 应用领域 2 特性及特点 特性 特点 3 两种核心机制 三 JDK JRE JVM的关系 四 Java环境变量配置 五 编写我的第一个程序 总结 前言 计算机语言