Java简介
JVM:(Java Virtual Machine)Java虚拟机,我们在进行java开发的时候,首先需要编写java源代码,
源代码经过编译器编译,编译成二进制文件(字节码文件.class文件),经过解释器对字节码文件进行解释翻译才能执行。
而JVM中包含了解释器(不同操作系统解释器不一样),所以java跨平台就是通过JVM来实现的。
确切的来说,java跨平台是因为JVM中的解释器跨平台
JDK:(Java Development Kit)Java开发工具包,java开发必备。包括
- Oracle JDK*
- Open JDK*
JRE: (Java Runtime Environment)Java运行环境,运行java程序必备 注意:Java9之后JDK中不再有JRE了
Java 特点是:垃圾回收机制
GC 自动回收内存中没有指针引用的堆内存空间
程语言(programming language)可以简单的理解为一种计算机和人都能识别的语言。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
机器语言:二进制 三机制 量子计算
编译型
优点:执行效率高
缺点:平台依赖重,跨平台不方便
MIT : 即时编译
解释型
优点:易于跨平台
缺点:源代码在一般情况下不便于加密,执行效率相对没有那么高
MIT : 即时编译
混合型:可编译可解释
虚拟机:
计算机存储单位
二进制 只有 0 和 1
一个二进制 是与1个比特 1比特 = 1bit
计算机中最小存储单元是字节 1字节 = 1B
1B = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
字符集
计算机只识别二进制对于字符的识别是较繁琐的为了提升计算机识别字符的速度降级计算机运算执行内存设计了ASCII码表
由于计算机最早是国外开始应用的,当时的打字机使用的是英文,英文只有26个字母,大小写字母+数字+特殊符号不超过128个,由于十进制与二级制转换相当简单且十进制在存储过程中相比于字符更节省空间,我们将数字与字符建立映射关系使用一个数字来代表一个字符 这种映射关系制作的一个表格这个表格我们称之为ASCII码表
Unicode
ASCII码表轻松的解决了字符编码的问题,但是随着计算机技术的广泛应用,被世界各国使用,而各国家的母语并非英语造成了ASCII码表无法表示世界各国语言。于是我们将使用一个字节存储的ASCII码表升级为两个字节表示的Unicode字符集。
BIG5
GBK
GB2312
CP936
UTF
Unicode字符集完美解决了各国字符编码的问题但是,有两个缺点:
世界上自然语种太过丰富,人们需要为每一种自然语言编一套Unicode编码集,工作量大,多语种的运行环境开发维护难度大。
哪怕是一个简单的十进制数字也需要使用两个字节存储,造成计算机资源的浪费。
难道就没有更好的解决方案了吗?
大一统方案
世界上所有的自然语种统一使用一个编码集这样就解决了多语种环境开发和运行的问题,这个统一的编码集就是UTF。