今天将开始将core java每天看到的内容,学习到的新的知识点做一个系统的笔记。
肺话少说,进入正题!
==================================================================
core java第一章:java程序设计概述
本章主要介绍了java的特点,主要有以下几点:简单性,面向对象,分布式,键壮性,安全性,体系结构中立,可移植性,解释性,高性能,多线程,动态性。
前段时间面试的时候问到了一个题目:java与其它面向对象语言的最大区别是什么?(跨平台,个人觉得应该是上面所说到的体系结构中立)。java中体系结构中立说的就是:java编译器将源码编译成一个体系结构中立的目标文件格式----字节码(class文件,命令javac *.java),然后再由解释器解释执行这些字节码(命令:java *)。这里就可以谈谈字节码与机器码的区别了,字节码不是机器码,字节码必须由JVM解释执行,而机器码是一连串的机器指令(0和1),它由计算机直接执行。程序的执行可分为编译执行与解释执行两中,编译执行可理解为笔译,它在执行的时候会产生目标程序,而解释执行可理解为口译,它在执行时不会产生目标程序(遇到一句执行一句)。这两种不同执行方法都有一个共同点:它们都要进行语法,语义上的分析,但它们的不同点就在于:解释执行比编译执行更节省空间,交互更方便,但是它的执行效率却远远低于编译执行,对于循环部分,解释执行要反复地重复执行。日下计算机速度如此之快,相信智者不会因为速度上的差异而忽略java的这一特点的。
接下来说说java的可移植性,那么java是怎么实现可移植性的呢?在core java中提到:java没有“依赖具体实现”的地方。怎么理解这句话呢?java是依赖抽象的,core java中提到:作为系统的组成部分的类库,定义了可移植性的接口,例如,有一个抽象类Window,给出了在UNIX,Windows和Macintosh下的不同实现。相信大家都应该可以体会到,如果依赖具体实现的话,这样的工程将有多大!java的数据类型也是同样是不是依赖具体实现的。在C/C 中,基本数据类型取决于CPU长度,但是在java中,所有的基本数据类型的长度都是固定的,它不会因为CPU的改变而改变。
基本数据类型 | 大小 |
byte | 1Byte |
short | 2Byte |
int | 4Byte |
long | 8Byte |
char | 2Byte |
float | 4Byte |
double | 8Byte |
boolean | 未知 |
动态性指的就是程序员可以随时在库中自由加入新的方法和新的变量,而对客户端没有任何影响。