当前位置: 首页 > news >正文

1. Java概述

文章目录

  • 1.Java语言概述
    • 1.1 Java介绍
      • 1.1.1 软件开发概述
      • 1.1.2 计算机语言
      • 1.1.3 Java 简史
      • 1.1.4 Java 技术体系平台
      • 1.1.5 Java在各领域的应用
      • 1.1.6 Java语言特点
      • 1.1.7 Java核心机制一-Java虚拟机
      • 1.1.8 Java核心机制二-垃圾回收
      • 1.1.9 Java开发工具
    • 1.2 Java环境搭建
      • 1.2.1 JDK、JRE
      • 1.2.2 JDK、JRE、JVM关系
      • 1.2.3 命令行查看jdk版本
      • 1.2.4 下载并安装JDK
      • 1.2.5 配置环境变量path
    • 1.3 Java 开发体验-HelloWord
    • 1.4 Java中的注释
      • 1.4.1 单行注释 多行注释
      • 1.4.2 文档注释
    • 1.5 Java API文档说明

1.Java语言概述

1.1 Java介绍

1.1.1 软件开发概述

  • 软件即数据和指令的集合。有系统软件和应用软件之分。

  • 人机交互方式

    1. 图形化界面 - Graphical User Interface GUI

    2. 命令行方式 - Command Line Interface CLI

Pascal之父Nicklaus Wirth: “Algorithms+Data Structures=Programs”

  • 常用的DOS命令(不区分大小写)

    1. dir : 列出当前目录下的文件以及文件夹**(directory-[dəˈrektəri]-目录)**

    2. md: 创建目录**(made directory)**

    3. rd: 删除目录 (remove dirdectory)

      rd *.txt:将当前目录下.txt文件删除,*表示未知的

    4. cd : 进入指定目录

    5. cd.. : 退回到上一级目录

    6. cd\: 退回到根目录**(cd/一样)**

    7. del : 删除文件**(delete)**

    8. exit : 退出 dos 命令行

    9. 补充:echo javase>1.doc

1.1.2 计算机语言

机器语言->编译语言->高级语言

1.1.3 Java 简史

  • 1991年 Green项目,开发语言最初命名为Oak (橡树)

  • 1994年,开发组意识到Oak 非常适合于互联网

  • 1996年,发布JDK 1.0,约8.3万个网页应用Java技术来制作

  • 1997年,发布JDK 1.1,JavaOne会议召开,创当时全球同类会议规模之最

  • 1998年,发布JDK 1.2,同年发布企业平台J2EE

  • 1999年,Java分成J2SE、J2EE和J2ME,JSP/Servlet技术诞生

  • 2004年,发布里程碑式版本:JDK 1.5,为突出此版本的重要性,更名为JDK 5.0(此后1.6->6.0,1.7->7.0)

  • 2009年,Oracle公司收购SUN,交易价格74亿美元

  • 2011年,发布JDK 7.0

  • 2014年,发布JDK 8.0,是继JDK 5.0以来变化最大的版本

  • 2017年,发布JDK 9.0,最大限度实现模块化

  • 2018年3月,发布JDK 10.0,版本号也称为18.3(9.0以后用时间来命名)

  • 2018年9月,发布JDK 11.0,版本号也称为18.9

1.1.4 Java 技术体系平台

image-20220709164543854

1.1.5 Java在各领域的应用

  • 企业级应用

  • Android平台应用

  • 大数据平台开发

  • 移动领域应用

1.1.6 Java语言特点

特点一:面向对象

  • 两个基本概念:类、对象

  • 三大特性:封装、继承、多态

特点二:健壮性

  • 垃圾回收机制
  • 去除C语言指针

特点三:跨平台性

  • 跨平台性:“Write once , Run Anywhere”(通过JVM实现)

  • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine) 即可。由JVM来负责Java程序在该系统中的运行。

    就像坤坤在南非和北京开演唱会,不同的环境,要搭建不同的平台,而这些不同的平台就像WIn版的JVM,linux版的JVM和Mac的JVM。然后坤坤就能在不同的地域中给爱坤人士开演唱会了

1.1.7 Java核心机制一-Java虚拟机

  • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器

  • 对于不同的平台,有不同的虚拟机。

  • 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行

  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

  • .java源代码编译成.class字节码文件,我们使用JVM中类的加载器和解释器对生成的字节码文件进行解释运行,字节码文件中对应的类就是这时加载到内存中去的。而虚拟机又是在操作系统上运行,操作系统又依赖于计算机硬件

  • 在EditPlus中源代码和字节码文件都在同一个文件夹下可以直接观察到

  • 在eclipse中,同样也有源代码编译成字节码文件

    img

1.1.8 Java核心机制二-垃圾回收

  • 不再使用的内存空间回收—— 垃圾回收。

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

  • Java程序还会出现内存泄漏和内存溢出问题吗?Yes!

1.1.9 Java开发工具

文本编辑工具:

  • 记事本

  • UltraEdit

  • EditPlus

  • TextPad

  • NotePad

Java集成开发环境(IDE):

  • JBuilder

  • NetBeans

  • Eclipse

  • MyEclipse

  • IntelliJ IDEA

1.2 Java环境搭建

1.2.1 JDK、JRE

  • JDK

    (Java Development Kit Java开发工具包)

    JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。 其中的开发工具:编译工具(javac.exe) 打包工具(jara.exe)等

  • JRE

    JRE(Java Runtime Environment Java运行环境)

    包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

使用JDK的开发工具完成的java程序,交给JRE去运行。

1.2.2 JDK、JRE、JVM关系

  • JDK = JRE + 开发工具集(例如Javac编译工具等)

  • JRE = JVM + Java SE标准类库

Java 8.0 Platform

image-20220709182656631

1.2.3 命令行查看jdk版本

1.2.4 下载并安装JDK

官方网址:www.oracle.com

安装JDK

  • 傻瓜式安装,下一步即可。
  • 建议:安装路径不要有中文或者空格等特殊符号。(可能不识别!)
  • 当提示安装 JRE 时,正常在JDK安装时已经装过了,但是为了后续使用Eclipse等开发工具不报错,建议也根据提示安装JRE。

1.2.5 配置环境变量path

  • 在dos命令行中敲入javac,出现错误提示

    错误原因:当前执行的程序在当前目录下不存在。windows系统在path的环境变量指定的目录中仍未找到,所以报错。所以配置号环境变量便可以在任何目录下执行java的开发工具。

  • 输入执行程序,系统首先会在当前目录下查找,如果没有,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。所以希望在任何目录下都可以执行Java的工具,只需要将Java工具所在路径定义到path环境变量中,让系统帮我们取找运行的程序。

    配置方法:

    1. 我的电脑–属性–高级系统设置–环境变量

    2. 编辑 path 环境变量,在变量值开始处加上java工具所在目录,后面用 “ ; ”和其他值分隔开即可。(应为window本来path就有一些预定义的path值,win11是不用分号的,因为win11是填空的形式)

    3. 打开DOS命令行,任意目录下敲入javac。如果出现javac 的参数信息,配置成功。

  • 电脑安装了多个版本的jdk,使用的是那个版本,全看环境变量中配置的是那个版本。

  • 系统在查找环境变量的时候会右上到下逐个路径查找,所以如果在前面的路径中发现了同名的,就不会往下查找了,和我们的预期不符合。所以配置path环境变量最好上移到第一个,这样就不会出问题了

1.3 Java 开发体验-HelloWord

步骤:

  1. 将 Java 代码编写到扩展名为 .java 的文件中。
  2. 通过 javac 命令对该 java 文件进行编译
  3. 通过 java 命令对生成的 class 文件进行运行

之前配置的环境变量就是能在任何目录下都可以执行Java的工具,如javac来编译,java运行。

步骤一:编写

选择最简单的编辑器:记事本。敲入代码

//第一个Java程序
public class Test{public static void main(String[] args) {System.out.println(Hello World!);} 
}

将文件保存成Test.java,这个文件是存放java代码的文件,称为源文件

注意要显示文件扩展名,这时练好习惯。方法如下

步骤二:编译

有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件。在该源文件目录下,通过javac编译工具对Test.java文件进行编译。如果程序没有错误,没有任何提示,但在当前目录下会出现一个Test.class文件,该文件称为字节码文件,也是可以执行的java的程序。

注意编译时用javac时要用扩展名,用java运行时不用扩展名。

步骤三:运行

  • 有了可执行的java程序(Test.class字节码文件)

  • 通过运行工具java.exe对字节码文件进行执行。

  • 出现提示:缺少一个名称为main的方法。

  • 因为一个程序的执行需要一个起始点或者入口,所以在Test类中的加入

    public static void main(String[] args){ }

  • 对修改后的Test.java源文件需要重新编译,生成新的class文件后,再进行执行。

  • 发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。

  • 想要和JVM来个互动,只要在main方法中加入一句System.out.println(“Hello World");因为程序进行改动,所以再重新编译,运行即可。

1.4 Java中的注释

1.4.1 单行注释 多行注释

/注释文字/ /*注释文字*/

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

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

1.4.2 文档注释

格式:

/**
@author指定java程序的作者
@version 指定源文件的版本
*/
  • 注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

  • 操作方式:

    具体例子:

    生成文件夹:

    双击结果,对文档的解释:

  1. 声明为public的类必须和源文件名相同,所以一个源文件中可以有多个类,但是只能由一个public类。

  2. Java应用程序的执行入口是main()方法。它有固定的书写格式:

    public static void main(String[] args) {...}

  3. 编译过程:编译过程会生成一个或多个字节码文件,字节码文件名和java源文件中定义的类名时相同的。多少个类就由多少个字节码文件。

1.5 Java API文档说明

  • API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。

  • Java语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的API文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。

  • 下载API:http://www.oracle.com/technetwork/java/javase/downloads/index.html

image-20220712232813572

相关文章:

  • 大话设计模式之简单工厂模式
  • stm32之GPIO寄存器
  • 【Hexo + Github 搭建自己的专属博客】
  • Itextpdf电子签章
  • 数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅱ)
  • 【MySQL】数据库--表操作
  • android pdf框架-10,相册浏览
  • flutter 修改app名字和图标
  • FPGA时钟资源详解(4)——区域时钟资源
  • Redis部署中的问题总汇
  • 【ansible】Failed to connect to the host via ssh Permission denied
  • Python中模块
  • 让IIS支持.NET Web Api PUT和DELETE请求
  • 《web应用技术》第一次课后练习
  • 【热门话题】Yarn:新一代JavaScript包管理器的安装与使用
  • 2018一半小结一波
  • 77. Combinations
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android Studio:GIT提交项目到远程仓库
  • AngularJS指令开发(1)——参数详解
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java 内存分配及垃圾回收机制初探
  • java2019面试题北京
  • JAVA并发编程--1.基础概念
  • MobX
  • MYSQL 的 IF 函数
  • Phpstorm怎样批量删除空行?
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Redis的resp协议
  • 阿里云购买磁盘后挂载
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从重复到重用
  • 大整数乘法-表格法
  • 分类模型——Logistics Regression
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于 Cirru Editor 存储格式
  • 技术:超级实用的电脑小技巧
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 嵌入式文件系统
  • 限制Java线程池运行线程以及等待线程数量的策略
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 积累各种好的链接
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​用户画像从0到100的构建思路
  • ![CDATA[ ]] 是什么东东
  • #162 (Div. 2)
  • #if 1...#endif
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.ajax()方法详解
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (一)Linux+Windows下安装ffmpeg