JAVA语言
1. 计算机基本概念(了解)
1.1 计算机组成
计算机由计算机硬件
和计算机软件
组成.
-
计算机硬件: 你的眼睛能看的见, 你的手能摸得着的东西.
-
中央处理器(CPU)
- 由运算器和控制器组成.
-
存储器
- 内存: 内存条(代数, 睿频).
- 外存: 硬盘(SSD: 固态硬盘, HSD: 混合盘, HDD: 机械硬盘), U盘.
-
输入设备
- 键盘, 鼠标
-
输出设备
- 显示器.
-
-
计算机软件: 能在计算机上运行的程序.
- 系统软件: Windows操作系统, Mac操作系统, Linux操作系统.
- 应用软件:
- 概述: 我们程序员用编程代码开发的软件.
- 例如: Typora, 微信, QQ.
1.2 语言简介
-
什么是语言(Language)?
- 指的就是人与人之间进行沟通, 交互的载体, 方式.
-
什么是计算机语言(Computer Language)?
- 指的就是
人与计算机之间
进行交互的方式.
- 指的就是
-
计算机语言的分类:
-
机器语言
简单理解: 由二进制0, 1这样的指令组成.
例如: 10010表示 加法.
-
汇编语言
简单理解: 用一些简单的字母表示二进制序列(0, 1)
例如: add表示 加法.
优点: 文件小, 执行速度快, 可以直接操作计算机的硬件
弊端: 可读性和可移植性相对较差, 对程序员来讲, 门槛较高.
-
高级语言
简单理解: 由一些纯英文字母(包含大小写) 和 一些特殊符号组成.
例如: +表示 加法.
优点: 语法相对简单, 可读性, 兼容性较强, 对程序员来讲, 门槛较低.
弊端: 种类繁多, 每种语言都有自己的语法, 每学一门语言, 都要学习新的语法.
分类
-
第一代高级语言:
例如: C语言, 以
面向过程
为编程思想, 唯一一门可以直接操作计算机硬件的高级语言 -
第二代高级语言:
例如: C++, 以
面向对象
为编程思想, 没有默认的垃圾回收机制. -
第三代高级语言: 目前市场上应用最多的语言
例如: Java, C#, 以
面向对象
为编程思想, 而且有默认的垃圾回收机制(GC). -
第四代高级语言: 未来的发展趋势, 现在还处于发展初期
简单理解: 以
面向问题编程思想为主
, 也就是说: 告诉计算机做什么, 而不是怎么做.例如:
Siri语言交互
,大数据云平台
, 这些势必肯定会用到大数据框架等技术
.
-
-
2. Java
Java简介
Java语言是美国Sun公司(Stanford University Network),在1995年推出的高级的编程语言。所谓编程语言,是计算机的语言,人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。
2009年,Sun公司被甲骨文公司收购,所以我们现在访问oracle官网即可:https://www.oracle.com
Java语言共同创始人之一:詹姆斯·高斯林 (James Gosling),被称为“Java之父”
应用
Java语言主要应用在互联网程序的开发领域。常见的互联网程序比如天猫、京东、物流系统、网银系统等,以及服务器后台处理大数据的存储、查询、数据挖掘等也有很多应用。
Java语言跨平台原理
特性
- 多态
- 多线程
- 面向对象
Java虚拟机——JVM
-
JVM(Java Virtual Machine ):Java虚拟机,简称JVM,是运行所有Java程序的假想计算机,是Java程序的运行环境,是Java 最具吸引力的特性之一。我们编写的Java代码,都运行在
JVM
之上。 -
跨平台:任何软件的运行,都必须要运行在操作系统之上,而我们用Java编写的软件可以运行在任何的操作系统上,这个特性称为Java语言的跨平台特性。该特性是由JVM实现的,我们编写的程序运行在JVM上,而JVM运行在操作系统上。
如图所示,Java的虚拟机本身不具备跨平台功能的,每个操作系统下都有不同版本的虚拟机。
JRE 和 JDK
- **JRE ** (Java Runtime Environment) :是Java程序的运行时环境,包含
JVM
和运行时所需要的核心类库
。 - JDK (Java Development Kit):是Java程序开发工具包,包含
JRE
和开发人员使用的工具。
我们想要运行一个已有的Java程序,那么只需安装JRE
即可。
我们想要开发一个全新的Java程序,那么必须安装JDK
。
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
3. JVM内存划分
1. 栈: 存储局部变量以及所有代码执行的
- 局部变量: 定义在方法中,或者方法上声明的变量
- 特点: 先进后出
2. 堆: 存储所有new出来的内容(对象)
- 特点: 队中的内容会在不确定的时间,被**GC(Java中的垃圾自动回收机制)**回收
- GC: 线程判断对象是否可以回收的依据是该对象是否有引用指向,因此,当确定该对象不再使用时,应该及时将其引用设置为null。
3. 方法区: 存储字节码文件的地方
- 类装载器载入类文件的字节码文件: 指的是后缀为**.class**的文件
- 字节码文件的回收: 由cpu处理
4. 本地方法区:
- 和系统相关的方法
5. 寄存器
- 和CPU相关(之后扩展-单独笔记)