初识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(一) 的相关文章

  • Maven 2:如何将当前项目版本打包在WAR文件中?

    我正在使用 Maven 2 构建我的 Java 项目 并且正在寻找一种向用户呈现 pom xml 当前版本号的方法 例如使用 Servlet 或 JSP 据我所知 最好的方法是 Maven 将版本号作为文本文件打包到 WAR 中 这使我能够
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 在哪里可以获得有关 Java FitNesse 和 Slim 的一些教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何开始使用 Chainsaw for Log4j?

    我想开始使用 Chainsaw v2 几乎没有关于它的信息 我只找到了this http www velocityreviews com forums t140105 help using chainsaw for log4j html 但
  • 哪个 Swing 布局管理器可以获得我想要的布局?

    我正在尝试按照这个模型制作一个基本的登录菜单 我决定将整个菜单放入 JPanel 中 以便在连接成功后我可以切换到另一个面板 所以我决定使用 Borderlayout 将标题放在北区 将连接按钮放在南区 我将边框布局的中心本身设置为面板 我
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • JTable 和 JScrollpane 大小的问题

    我有一个JScrollPane with a JTable在里面 在里面JTable我最初有 3 行 稍后添加行 默认JTable我的 3 行很难看 因为JScrollPane calls getPreferredScrollableVie
  • JFace ColumnWeigthData 导致父级增长

    我有一个 Eclipse RCP 应用程序 并且想要在TableViewer using ColumnWeigthData as ColumnLayoutData 问题是父表单 ScrolledForm在示例代码中 每当我布局表格时都会增加
  • 如何导入 org.apache.commons.lang3.ArrayUtils;进入 Eclipse [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我如何导入 org apache commons lang3 ArrayUtils 将库添加到 Ecl
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 当您在数组列表上调用remove(object o)时,它如何比较对象?

    当您在 java 中的数组列表上调用remove object o 时 它如何比较对象以找到要删除的正确对象 它使用指针吗 或者它使用 Comparable 接口来比较对象吗 ArrayList remove 依赖于对象的实现Equal方法
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • JavaFX - 为什么多次将节点添加到窗格或不同的窗格会导致错误?

    我现在正在学习基本的 JavaFX 我不明白我正在阅读的书中的这一说法 不 诸如文本字段之类的节点只能添加到一个窗格中一次 将节点添加到多次窗格或不同的窗格将导致运行时错误 我可以从书中提供的UML图看出它是一个组合 但我不明白为什么 库类
  • 使用 JAD 反编译 java - 限制

    我正在尝试使用 Java 中的 JAD 反编译几个 jar 文件 我也尝试过 JD GUI 但运气更差 但出现了很多错误 一种类型 易于修复 似乎是内部类 但我也发现了这段代码 static int SWITCH TABLE atp com
  • 警告:无法更改每个人的权限:

    当运行 Java 快速入门示例时https developers google com drive web quickstart java hl hu https developers google com drive web quicks
  • 如何用表达式语言获取布尔属性?

    如果我有一堂这样的课 class Person private int age public int getAge return age public boolean isAdult return age gt 19 我可以得到age像这样
  • 春季 CORS。在允许的来源中添加模式

    查看CORS的弹簧指南 以下代码启用所有允许的来源 public class MyWebMVCConfigurer extends WebMvcConfigurerAdapter Override public void addCorsMa
  • 防止Java实例化的正确方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么范围为“provided”的依赖项会隐藏 Maven 中的传递依赖项?

    我的 Maven 项目中有三个模块 这稍微简化了 model包含JPA注释的实体类 坚持实例化一个实体管理器并调用它的方法 应用创建类的实例model 设置一些值并将它们传递给坚持 model and 坚持显然取决于javax persis

随机推荐

  • 西门子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环境变量配置 五 编写我的第一个程序 总结 前言 计算机语言