第1章-Java语言概述

2023-11-16

Java基础知识图解

在这里插入图片描述

1. Java语言概述

1.1 Java简史

  • 是SUN(Stanford University Network,斯坦福大学网络公司 ) 1995年推出的一门高级编程语言。
  • 是一种面向Internet的编程语言。 Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。 这些Java程序被称为Java小程序(applet)。 applet使用现代的图形用户界面与Web用户进行交互。 applet内嵌在HTML代码中。
  • 随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。后台开发: Java、 PHP、 Python、 Go、 Node.js
  1. 1991年 Green项目,开发语言最初命名为Oak (橡树)
  2. 1994年,开发组意识到Oak 非常适合于互联网
  3. 1996年,发布JDK 1.0,约8.3万个网页应用Java技术来制作
  4. 1997年,发布JDK 1.1, JavaOne会议召开,创当时全球同类会议规模之最
  5. 1998年,发布JDK 1.2,同年发布企业平台J2EE
  6. 1999年, Java分成J2SE、 J2EE和J2ME, JSP/Servlet技术诞生
  7. 2004年, 发布里程碑式版本: JDK 1.5, 为突出此版本的重要性,更名为JDK 5.0
  8. 2005年, J2SE -> JavaSE, J2EE -> JavaEE, J2ME -> JavaME
  9. 2009年, Oracle公司收购SUN,交易价格74亿美元
  10. 2011年,发布JDK 7.0
  11. 2014年,发布JDK 8.0,是继JDK 5.0以来变化最大的版本
  12. 2017年,发布JDK 9.0,最大限度实现模块化
  13. 2018年3月, 发布JDK 10.0,版本号也称为18.3
  14. 2018年9月,发布JDK 11.0,版本号也称为18.9

1.2 Java技术体系平台-Java SE、Java EE、Java ME

在这里插入图片描述

1.3 Java在各领域的应用

  • 从Java的应用领域来分, Java语言的应用方向主要表现在以下几个方面:
    • 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。 Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用。应用领域包括金融、电信、交通、电子商务等。
    • Android平台应用: Android应用程序使用Java语言编写。 Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实。
    • 大数据平台开发:各类框架有Hadoop, spark, storm, flink等,就这类技术生态圈来讲,还有各种中间件如flume, kafka, sqoop等等 ,这些框架以及工具大多数是用Java编写而成,但提供诸如Java, scala, Python, R等各种语言API供编程。
    • 移动领域应用:主要表现在消费和嵌入式领域, 是指在各种小型设备上的应用,包括手机、 PDA、机顶盒、汽车通信设备等

1.4 Java语言的主要特性

  • Java语言是易学的。 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java
  • Java语言是强制面向对象的。 Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)
  • Java语言是分布式的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、 URLConnection、 Socket、 ServerSocket等。 Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段
  • Java语言是健壮的。 Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择
  • Java语言是安全的。 Java通常被用在网络环境中,为此, Java提供了一个安全机制以防恶意代码的攻击。如:安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查
  • Java语言是体系结构中立的。 Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行
  • Java语言是解释型的。 如前所述, Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运行
  • Java是性能略高的。 与那些解释型的高级脚本语言相比, Java的性能还是较优的
  • Java语言是原生支持多线程的。 在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建

1.5 Java语言运行机制及运行过程

  • 特点一: 面向对象

    • 两个基本概念:类、对象
    • 三大特性:封装、继承、多态
  • 特点二: 健壮性

    • 吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制
  • 特点三: 跨平台性

    • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。 “Writeonce , Run Anywhere”
    • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM JavaVirtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。
      在这里插入图片描述
  • Java两种核心机制:

    • Java虚拟机 (Java Virtal Machine)
    • 垃圾收集机制 (Garbage Collection)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

1.6 JDK、JRE、JVM的关系

  • 什么是JDK, JRE:
    • JDK(Java Development Kit Java开发工具包)
      JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
    • JRE(Java Runtime Environment Java运行环境)
      包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,
      如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可
  • 简单而言,使用JDK的开发工具完成的java程序,交给JRE去运行

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

  • JDK = JRE + 开发工具集(例如Javac编译工具等)
  • JRE = JVM + Java SE标准类库

1.7 编写、编译、运行

在这里插入图片描述

1.8 注释

用于注解说明解释程序的文字就是注释

  • Java中的注释类型:
    • 单行注释
    • 多行注释
    • 文档注释
  • 注释的作用:
    • 提高了代码的阅读性;调试程序的重要方法。
    • 注释是一个程序员必须要具有的良好编程习惯。
    • 将自己的思想通过注释先整理出来,再用代码去体现
  • 单行注释格式
    //注释文字
  • 多行注释格式
    /* 注释文字 */
  • 文档注释(Java特有)格式
    /**
    @author 指定java程序的作者
    @version 指定源文件的版本
    */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行

多行注释里面不允许有多行注释嵌套

  • 注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形
    式体现的该程序的说明文档
    操作方式:
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第1章-Java语言概述 的相关文章

  • TaskSchedulerImpl:初始作业尚未接受任何资源;

    这就是我正在尝试做的事情 我创建了DataStax企业集群的两个节点 在其上创建了一个java程序来获取一张表 Cassandra数据库表 的计数 该程序是在 eclipse 中构建的 实际上是来自 windows 盒子 从 Windows
  • 不可变子类

    我目前正在开发一个多线程框架 为了避免副作用 我想要求框架操作的所有数据都必须是不可变的 那么Java中是否存在一种方法来指定我希望给定类的所有子类或实现给定接口的所有类都是不可变的 我建议调查一下变异性检测器 http code goog
  • 使用java进行JSON模式验证[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为返回 JSON 对象的 java webapp 编写一些验收测试 我想验证返回的 JSON 是否针对架构进行验证 任何人都可以建议
  • 当 SwingWorker 在后台工作时,对话框没有响应

    基本上我得到了一个以 main 方法作为入口点的 JFrame 在这个主要方法中 程序必须下载一些图像 为了通知用户程序将随时启动 我想显示一个简单的对话框 如果我将对话框设置为模式 我必须在启动程序后关闭它才能触发下载 如果我将其设置为非
  • 良好的客户端套接字池

    我需要管理从我的 Java 应用程序到外部服务器的长时间运行的 TCP 套接字连接 我正在寻找一个好的套接字池 这样我就可以重复使用套接字 有什么建议吗 你可以看看在上面建立一个套接字池公共池 http commons apache org
  • 为什么我们在Java中使用接口引用类型? [复制]

    这个问题在这里已经有答案了 我即将参加第一门面向对象编程课程的期末考试 但我仍然不明白多态性的概念 假设我有一个抽象类 Vehicle 该类有一个名为 Aircraft 的子类 我的问题是 这两个代码有什么不同 Aircraft Jetpl
  • System.out 什么时候不会出现在 Java 控制台中?

    我明白任何要标准化的东西 System out 将出现在 Java 控制台窗口中 启用时 我在某个地方发现 在某些情况下可能无法尝试这样做 例如 在 Swing 应用程序中 是这样吗 基本上 什么情况或设置我不希望在控制台中看到标准输出 例
  • “赠送”应用内购买 Android

    有没有办法将 Google Billing 中的应用内购买 赠送 给特定帐户 我把这个问题放在这里是因为如果有一种方法可以以编程方式完成它 那很好 但不是必须的 在官方文档中找不到任何相关内容 我想要这个的原因是因为我的一个应用程序目前处于
  • 从列表中删除对象的最佳方法是什么

    我有以下逻辑来删除系统中的非活动用户 因为我们在迭代列表时无法删除行 有更好的方法来处理这个问题吗 List
  • Java ArrayList,在一行中获取多种类型(int、String 等)的用户输入

    我正在努力提高 Java 水平 我遇到的一个问题是获取用户输入 所有这些都在一行中 如下所示 System out println Please input numbers that you would like to work with
  • Spring方法获取给定类型的所有bean

    我试图从一个相同类型的豆子中获取所有豆子FileSystemXmlApplicationContext 我正在使用factory getBeansOfType SomeType class 但我注意到它只返回顶级 bean 是否有任何其他方
  • 在 Android 应用程序中读取 CSV 文件

    我正在开发一个概念验证应用程序 以便我可以在我正在制作的更大的应用程序中实现该功能 我对 Java 和 Android 开发有点陌生 但希望这个问题不会太简单或太复杂 基本上 我试图从 CSV 文件中读取字符串列表 并使其可用于在应用程序的
  • Android 设计导航抽屉 - 如何在 nav xml 中添加开关?

    我正在使用新的 Android 设计导航抽屉 我想在抽屉里加一个开关 有办法实现这个吗 这是菜单 xml menu menu
  • 更新写入 java 文本文件的对象

    将 Java 对象或列表写入文本文件是可以的 但我想知道如何更新或重写以前写入的对象而不再次写入对象 例如 假设有一个 java util List 有一组对象 然后将该列表写入文本文件 然后稍后该文件将被再次读取并从列表中获取所有对象 然
  • 如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

    有没有人尝试过在 spring boot 中禁用 mongodb 的自动配置 我正在尝试使用 spring data mongodb 来启动 spring boot 使用基于java的配置 使用 spring boot 1 2 1 RELE
  • 修改void函数的输入参数并随后读取它

    我有一个相当复杂的 java 函数 我想使用 jUnit 进行测试 并且我正在使用 Mockito 来实现此目的 这个函数看起来像这样 public void myFunction Object parameter doStuff conv
  • 如何在android中格式化长整型以始终显示两位数

    我有一个倒计时器 显示从 60 到 0 的秒数 1 分钟倒计时器 当它达到 1 位数字 例如 9 8 7 时 它显示 9 而不是 09 我尝试使用String format B 02d B x 我将 x 从 long 转换为字符串 它不起作
  • JJWT依赖混乱

    我继承了一个java项目 在POM xml中有这个
  • 使用 Java Swing 平均成绩 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个家庭作业 我一直在编码 我以
  • 如何在JdbcTemplate中执行多批量删除?

    我想一次删除多个数据库条目 仅当 3 个字段匹配 此处 姓名 电子邮件 年龄 时 才应删除每个条目 如果我只想删除单个属性 我会选择 String sql DELETE FROM persons WHERE email IN JdbcTem

随机推荐

  • xrd计算晶面间距_origin分析XRD(6.晶格常数计算立方晶系举例)

    微信公众号试行乱序推送 为了不错过更新 请点击本页面最上方的 结构分析表征 进入公众号主页 点击右上角的三个小点点 在弹出的界面点击 设为星标 并在看完图文或视频后点击右下角的 在看 和 赞 本公众号以各类仪器的测试 分析教程 欢迎关注同名
  • Windows10 配置ftp实现局域网文件共享

    准备两台电脑能相互ping通 设置网络共享 控制面板 gt gt 网络和Internet gt gt 网络和共享中心 gt gt 高级共享设置 开启WindowsDefender 防火墙允许FTP文件共享 这里我在自己电脑上没找到FTP的选
  • iOS17适配指南-新版

    文章目录 一 iOS17适配点 二 具体代码 一 iOS17适配点 UIView与UIViewController 可以设置数据为空时的占位视图 增加SymbolAnimations 通过addSymbolEffect 与removeSym
  • Unuty3D开发ai2thor

    一 Edit 用Uinity3D打开ai2thor unity项目进行编辑 二 Build 方法一 1 修改ai2thor目录下的task py文件 注释86 89行 并添加一行Unity3D软件的路径 if os path exists
  • Qt5中通过信号槽传递多个参数

    在Qt中的信号槽机制中 信号能携带的参数最多不超过6个 那么超过6个时怎么办呢 这时 可以使用QByteArray作为参数 把需要传递的参数全部打包到这一个参数里 在槽函数里再将打包的参数逐项解析出来 信号发送 void signal ms
  • Unity学习记录——空间与运动

    Unity学习记录 空间与运动 前言 本文是中山大学软件工程学院2020级3d游戏编程与设计的作业3 编程题 1 模拟太阳系 首先向unity中Assets添加所找的贴图素材Solar Textures Solar System Scope
  • 基于verilog设计一个硬件看门狗

    文章目录 一 看门狗简介 二 看门狗分类 三 看门狗模块设计 3 1 看门狗模块设计框图 3 2 顶层 3 3 计数器 3 4 边沿检测器 3 5 信号延迟模块 一 看门狗简介 看门狗 也称看门狗定时器 是常见于系统的一种外设 看门狗似乎就
  • 嵌入式开发中常用且杂散的命令

    1 mount命令 挂载linux系统 mkdir tmp share mount t nfs 10 77 66 88 share tmp share o nolock tcp cd tmp share 挂载Windows系统 mkdir
  • 【Linux】Linux 基础开发工具(yum、vim、gcc/g++、gdb、make/makefile、git)

    文章目录 一 Linux 软件包管理器 yum 1 1 软件包 1 2 搜索 安装 卸载软件包 1 3 拓展 rz sz 工具 二 Linux 开发工具 2 1 编辑器 vim 2 1 1 vim 的基本概念 2 1 2 vim 的基本操作
  • python爬虫——爬取英雄联盟全英雄皮肤

    爬取英雄联盟全英雄皮肤 import requests import re 1 分析目标网页 确定爬取的url路径 headers参数 base url https game gtimg cn images lol act img js h
  • SQL sever FullText Search(MSSQLSERVER)为什么启动不了?

    查看一下事件日志里的错误 然后把具体的错误找出来 如果是出现 Microsoft Search 服务和下列不存在的服务存在相依的关系 NTLMSSP 的话 就重新安装 microsoft网络客户端 本地连接 属性安装microsoft网络客
  • 单片机通过WH-LTE-7S4和外网服务器进行4G通信

    您想要实现什么功能 单片机通过WH LTE 7S4模块和外网服务器进行4G通信 您是如何连接和设置的 我还不太清楚如何设置 您遇到什么问题 1 你们网站上介绍的都是用你们公司专用的软件来设置4G模块TCP连接的外网地址和端口号 但是我需要在
  • tensorFlow 预训练模型下载地址

    https github com tensorflow models tree master research slim
  • leetcode 45.跳跃游戏 II

    一 题意 给出一个非负整数数组 nums 数组中的每个元素代表在该位置可以跳跃的最大长度 使用最少的跳跃次数到达数组的最后一个位置 假设总是可以到达数组的最后一个位置 二 解法 贪心算法 解法一 反向查找 从头开始找到第一个能到n 1位置的
  • NO1:how

  • 蓝桥杯有必要参赛吗?

    昨天和群里的小伙伴在群里聊 有的小伙伴竟然说蓝桥杯一等奖没有含量 我也是醉了 就像去年看了一个号主写的 研究生遍地都是 放眼全国14亿人口 别说研究生了 本科生占比有多少 蓝桥杯是我人生中得到的第一个大奖 在蓝桥杯大赛备赛期间 我学到了很多
  • 字节跳动面试题汇总 -- C++后端(含答案)

    malloc和new的区别 new delete 是 C 关键字 需要编译器支持 malloc free 是库函数 需要头文件支持 使用 new 操作符申请内存分配时无须指定内存块的大小 编译器会根据类型信息自行计算 而 malloc 则需
  • AIGC用于智能写作的技术综述-达观数据

    导语 图1 ChatGPT生成的关于智能写作的介绍 智能写作指使用自然语言处理技术来自动生成文本内容 这种技术通过分析给定语料库 学习文本的结构和语法 然后利用这些信息来生成新的文本 智能写作可以用来快速生成高质量的文本内容 并且可以用来完
  • 基于python管理系统论文_基于Python网络爬虫的设计与实现毕业论文+源码-学生毕业作品网站...

    本课题的主要目的是设计面向定向网站的网络爬虫程序 同时需要满足不同的性能要求 详细涉及到定向网络爬虫的各个细节与应用环节 搜索引擎作为一个辅助人们检索信息的工具 但是 这些通用性搜索引擎也存在着一定的局限性 不同领域 不同背景的用户往往具有
  • 第1章-Java语言概述

    Java基础知识图解 1 Java语言概述 1 1 Java简史 是SUN Stanford University Network 斯坦福大学网络公司 1995年推出的一门高级编程语言 是一种面向Internet的编程语言 Java一开始富