毛头小子初学Java
争取每日一更。初学者,所以笔记记得有不合理之处还望各位大佬看文章后给出宝贵的建议,大宝在此谢谢各位!
1.1Java 语言的历史与特点
What is Java?
Java首先是一种编程语言
-
它是一种面向对象的编程语言(oop)
-
它的语法与c和c++语言极为相似
-
Java所用的语法十分简单
Java的特点
-
简单易学(呵。。。呵呵。。呵呵呵)
-
面向对象(跨平台)
-
平台无关性
-
安全稳定
-
支持多线程
-
提供了丰富的类库
-
易头秃(开个玩笑)
Java提供类以满足网络化、多线程、面向对象系统的需要
-
语言包(package)
-
实用程序包
-
I/o包
-
网络包
-
图形用户界面包(windows用户界面包)
-
More。。。。
Java与c++的对比(java 是c+±-·
1.无直接指针操作
2.自动内存管理
3.数据类型长度固定
4.不用头文件
5.不包含结构和联合
6.不支持宏
7.不用多重继承
8.无类外全局变量
9.无 goto(没有绝望)
Java的三种核心机制
1.Java虚拟机(Java virtual machine)
2.代码安全性检测(code security)
3.垃圾收集机制(garbage collection)(内存能够自动管理)
Java程序的编译与运行
源程序:什么什么。Java(文本文件)
源程序经过编译称为javac、C语言文本文件叫cc
经过Javac编译以后生成的目标文件(结果文件)叫class文件(类文件)
类文件里边有一些字节码(目标代码)(bytecode)
字节码并不是实际机器的最终执行码,他自己定义一套规则(就是这里边的一系列指令与这个领域平台无关,被称为Java的虚拟机指令。
目标代码(字节码)(bytecode)运行程序要使用Java的命令,需要Java命令调用虚拟机,(虚拟机:在系统(Windows,Linux)的具体的基础之上运行代码的中介)运行代码,最终转化成系统(Windows,Linux)上的代码。
C/C++直接编译成具体平台CPU的指令而Java是先变成与平台无关的指令然后用具体的虚拟机去执行。
虚拟机就相当于系统再建立一套程序
Java虚拟机(Java virtual machine)
定义:在一台计算机上由软件或者硬件模拟的的计算机。
Java虚拟机(JVM)读取并处理经编译过的字节码class文件
Java虚拟机规范定义了:
-
指令集
-
寄存器集
-
类文件结构
-
堆栈
-
垃圾收集堆
-
内存区域
Java运行环境(JRE):
JRE(the Java runtime environment):由虚拟机装载程序并调用相应的指令来具体执行。
JRE=JVM(虚拟机)+API(lib/编程的库)
JRE运行程序时的三项主要功能:
-
加载代码:由class loader完成:()
-
效验代码:由bytecode(目标代码、字节码)verifier‘完成。(保证代码安全)
-
执行代码:由runtime interpreter完成、(解释与执行)
理解
1. 为何Java是跨平台的?
答:由于class文件是与平台无关的,只需把class文件,放到不同的系统就能有不同的虚拟机来执行,所以Java程序是可以跨平台的
2. 为何Java是安全的?
答:Java里边有代码的自动校验过程(bytecode verifier)
Java自动垃圾回收技术
- 垃圾回收(garbage collection、gc)
- 在C/C++等语言中由程序员负责回收无用内存
- Java语言自动垃圾回收
-
系统级线程跟踪存储空间的分配情况
-
在JVM的空闲时,检查并释放那些可被释放的储存器空间
-
由系统运行,程序员无须也无法精确控制和干预该回收过程
-
JDK(Java开发工具包)
JDK=JRE(Java运行环境)+tools(工具)
JRE(Java运行环境)=JVM(虚拟机)+API(lib、编程的库)
图片来源为 MOOC课程截图,大佬们不会怪罪我吧,我毕竟没有图片版权