JVM与垃圾收集机制

Java语言的特点:跨平台性

原因:因为可以在每个不同平台下载jvm

核心机制-Java虚拟机

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

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

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

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

核心机制-垃圾回收

不在使用的内存空间应回收-垃圾回收

在C/C++等语言中,由程序员负责回收无用内存。

Java语言消除了程序员回收无用内存空间的责任,它提供了一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。

垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。

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

JDK、JRE、JVM的关系

什么是JDK、JRE

JDK

JDK是提供Java开发人员使用的,其中包含了java的开发工具,也包括了JJRE。所以安装了JDK,就不用在单独安装JRE了

其中的开发工具:编译工具(javac.exe)打包工具(jar.exe)等

JRE

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

JDK、JRE、JVM的关系

JDK=JRE+开发工具集

JRE=JVM+Java SE标准类库

官方网址:

www.oracle.com

java.sun.com

安装JDK

傻瓜式安装,下一步即可。

建议:安装路径不要有中午或者空格等特殊符号

如果操作系统是64位的,软件尽量选择支持64位的

当前提示安装JRE时,正常在JDK安装的时候已经安装过了,但是为了后续使用Eclipse等开发工具不报错,建议也根据提示安装JRE。

JDK的安装

下载JDK

下载路径:
链接:Java Downloads | Oracle

根据电脑的系统选择对应的版本,其中x86表示32位系统,x64表示64位系统。

JDK安装步骤

双击下载下来的安装文件, 点下一步

这里我们可以选择安装路径,也可以默认安装。如果更改路径最好不要放在中文或者带空格的目录下,以免将来出现不必要的麻烦。

点击下一步就开始安装了

设置环境变量

桌面“我的电脑”右击,选择“属性”打开“系统控制面板”选择“高级系统设置”

进入之后选择高级系统设置,然后选择环境变量

在打开的环境变量对话框后,单击下方【系统变量】下的【新建】按钮;

然后输入JAVA_HOME,对应的变量值为你jdk安装的目录。

点击确定。

然后新建变量名:classpath 变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar点确定

然后在系统变量中找到名为“Path”的变量并双击,新建变量为 %JAVA_HOME%\bin

确定以后,分别输入“java”、“java -version”(java -version代表你安装的java的版本)和javac,若都正常运行则代表java已经正确安装。

验证jdk

点击【开始】菜单,收入cmd进入命令模式,输入“java -version”可以查看安装版本

注释

java规范有三种注释方式

单行注释

多行注释

文档注释

什么是单行注释和多行注释

//这是单行注释

/*

*这是多行注释

*/

单行注释和多行注释的作用

1.对说写的程序进行解释说明,增强可读性,方便自己,方便别人

2.调试所写的代码

单行注释和多行注释的特点:

单行注释和多行注释,注释了的内容不参与编译。换句话说,编译以后生产的.class结尾的字节码文件中不包含注释掉的文字或者信息

文档注释(java特有)

文档注释格式

/**

@author 指定java程序的作者

@version指定源文件的版本

**/

注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。

操作方式(小黑窗口)

javadoc -d myHello -author -version Helloava.java

多行注释使用的注意点

多行注释不能嵌套使用

Java API的文档

API是JAVA提供的基本编程接口

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

下载API

https://www.oracle.com/technetwork/javase/downloads/index.html

JDK8的下载地址:Java Development Kit 8 Documentation

JDK17离线下载地址为:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html

点击 Download

进行下载离线版本。

解压之后, 可以看到文档详细内容。 进入到 docs 目录。 index.html 就是文档主页。 直接用浏览器打开就好了。

打开之后的效果, 和上面在线的 API 文档是一致的。推荐使用该方式进行查看 API。用于开发和调试。

我们学习的时候, 不可能是从 API 文档的最顶部往下学习。 这样学习的效率太低。 就相当于你要背单词从 abandon 开始。然后再也走不出去。

从 JDK 9 开始,JDK 都是模块化的工程。 所以 Java 开发者就根据功能而已进行了模块化的划分。

学习任何一个技术, 首先就是要看技术的相关介绍, 并且是大局观的介绍。 只有这样你才能知道这个技术是什么, 能做什么, 能做成什么样。 看文档也是。

我们简单的翻译一下文档:

一开始说了本文档主要包含两部分的内容。

一部分是 Java SE,另一个部分是:JDK

Java SE

Java 平台标准版 (Java SE) API 定义了用于通用计算的核心 Java 平台。 这些 API 位于名称以 java 开头的模块中。

Java SE 主要包含以下模块:

JDK

Java 开发工具包 (JDK) API 特定于 JDK,需要注意的是该模块不一定在 Java SE 平台的所有实现中都可用。也就是说不同版本的 JDK 针对这些模块接口实现是不一致的。使用的时候需要注意。 这些 API 位于名称以 jdk 开头的模块中。

JDK 主要包含以下模块:

除了这两部分, 还有一部分是只有一个内容就是和智能卡相关的。

需要注意的是:当前描述适用于 JDK 11+ 的版本。 主要以 JDK 17 的版本进行讲解描述。

几种检索方式:

index: 这里可以查看指定字符开头的类和接口。

如果想看所有的。 可以使用 All Classes and Interfaces 。

打开之后的页面为:

这个时候, 可以通过右侧的 search 进行搜索。 如果只记得某个类的开头, 或者其中一部分。 可以使用这个快速的定位到你需要的内容上。

我们看一下之前错误的提示异常类。 NoClassDefFoundError

从这可以看到他是在 java.lang 的下面。 并且 java.lang 是在 java.base 的模块下, 一次记不住没关系, 多看多练几次就熟能生巧了。

第一个Java程序的总结

1.java程序编写-编译-运行的过程

编写:我们将编写的java代码保存在“.java”结尾的源文件中

编译:使用javac.exe命令编写我们的java源文件。格式:javac源文件名.java

运行:使用java.exe命令解释运行我们的字节码文件。格式:java 类名

2.在一个java源文件中可以声明多个class。但是,只能最多有一个类声明为public的。

而且要求声明为public的类的类名必须与源文件名相同。

3.程序的入口main()方法。格式都是固定的。

public static void main(String[]args){

//public static void main(String a[]){//arguments:参数

}

4.输出语句

System.out.print();//只输出数据

System.out.println();//先输出数据,然后换行

5.每一行的执行语句都会以";"结束

6.编译过程:编译以后,会生成一个或者多个字节码文件。字节码文件的文件名与java源文件中的类名相同。

java语言入门(一)之JAVA语言基的概述相关推荐

  1. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  2. 怎么理解python语言_Python语言入门1-理解Python语言

    本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...

  3. Linux中的Java类,Java基础入门学习-Java中类的属性

    Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...

  4. java语言入门(二)之JAVA的基本语法

    *关键字和保留字 1.关键字(keyword)的定义和特点 定义:被 Java 语言赋予了特殊含义,用做专门用途的字符串(单词) 特点:关键字中所有字母都为小写 官方地址: https://docs. ...

  5. vhdl语言入门_初学Chisel语言,看这篇就够了:最方便简洁的入门资料整理

    声明:本文是我一个很优秀的学生总结的,放出来供广大chisel语言爱好者参考. Chisel(Constructing Hardware In a Scala Embedded Language)是U ...

  6. c语言入门教程文库,C语言入门教程(全集)课件

    C语言入门教程(全集)课件 01123364105 Y N p AB X=0? YN P1 A A P2 a a b b Y Y N N y n A B P A A B X=0? 3 a97 3 U ...

  7. c语言入门经典案例,c语言入门经典案例及飞源代码.doc

    c语言入门经典案例及飞源代码 循环控制输出图案 [程序1]题目:输出9*9口诀.1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列.2.程序源代码:#include "stdio.h ...

  8. R语言入门第一集 R语言、RTools、RStudio的简介、安装与使用

    R语言入门第一集!R语言.RTools.RStudio的简介.安装与使用! 一.简介:什么是R语言.RTools.RStudio? R语言 RStudio R 语言的集成开发环境 rtools是什么工 ...

  9. 计算机c语言入门.ppt,计算机c语言入门经典

    计算机c语言入门经典 C语言对编写需要进行硬件操作的场合,优于其它高级语言.小编为大家分享一些计算机c语言入门经典,欢迎参考! 一.开始之前 FAQ 那是什么 为何有这篇FAQ 编程为何物 如果这就是 ...

最新文章

  1. iOS 设计模式浅析 1 - 策略
  2. ant自动打包多个android项目为apk
  3. Ubuntu 16.04 安装 Wireshark分析tcpdump的pcap包——sudo apt install wireshark-qt
  4. Docker入门-构建第一个Java程序
  5. 韩国冬奥:未来科技奥运我要长这样,阿里巴巴:你尽管想
  6. 吃透这份pdf,拿下阿里、腾讯等大厂心仪offer(软件测试岗)
  7. python图像增强_使用Python进行图像增强
  8. 项目经理案头手册学习系列【9、10】——资源强制进度计划、应用PERT编制进度计划...
  9. c# picturebox 刷新_EmguCV控件Emgu.CV.UI.ImageBox及C# picturebox显示图片连续刷新出现闪烁问题...
  10. 手写分页sql_MyBatis-Plus 分页查询以及自定义sql分页的实现
  11. ubuntu 的 kitti2bag安装与测试
  12. SwiftyJSON源码分析
  13. 失眠就吃安眠药真的好吗?好心情送你沾枕到天亮的诀窍
  14. Shiro在线刷新权限
  15. web前端入门到实战:简单的图片轮播
  16. unity替换模型材质
  17. Mac系统下如何创建锁屏快捷键
  18. 计算机基础知识(基础入门小白专属)七
  19. 免费的云服务器,大家推荐哪个呢?
  20. nil Foundation blueprint模块代码解析

热门文章

  1. 米线店结账程序 装饰着模式_海底捞推出三个子品牌 主打餐饮10元店模式
  2. EXCEL之跨工图表数据区域
  3. Blender和ZBrush的桥接插件:GoB
  4. 2017福州大学面向对象程序设计课程作业五
  5. 联想新计算机开机黑屏,win10联想笔记本电脑开机黑屏进不去系统怎么办
  6. 比亚迪-唐dmi,宋plus dmi说明书资料
  7. linux 查oracle版本号,查看linux中oracle版本号的方法总结
  8. 极兔快递单号如何批量查询分析物流信息
  9. iMac mid 2011 升级内存
  10. 教育学术论文的摘要和关键词