一些常识
- 计算机科学相关:
- 程序=算法(代码)+数据结构(数据)
算法:一种有限的,确定的,有效的并且适合计算机程序来实现的解决问题是方法。
数据结构:便于算法操作的组织数据的方法。
- 标准ASCII码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符,最高的那一位是校验位。
其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1
- 计算机中用补码表示负数。
- 最初的unicode编码是固定长度的,16位,也就是2两个字节代表一个字符,这样一共可以表示65536个字符。显然,这样要表示各种语言中所有的字符是远远不够的。Unicode4.0规范考虑到了这种情况,定义了一组附加字符编码,附加字符编码采用2个16位来表示,这样最多可以定义1048576个附加字符,目前unicode4.0只定义了45960个附加字符。Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16,三种unicode字符集之间可以按照规范进行转换。
- JAVA相关:
- java不只是编程语言,也是开发环境,运行环境,部署环境。
- 不能达到的代码=错误
面向对象的编程语言
主要与C语言相比,C语言是第一个真正由程序员来设计,实现,开发的编程语言,是面向过程的编程语言。
- 处理复杂度能力。
面向过程的编程语言处理复杂度的能力有限,不如面向对象的编程语言。 - 强调什么
面向过程:强调正在发生什么,即代码作用于数据。
面向对象:强调谁将被影响,即数据控制对代码的访问。 - 三个特性
- 封装
基本单元是类,内部隐藏了实现复杂性的机制。可以区别公有私有,可以保证不想发生的事情,一定不会发生。 - 继承
使用层级分类是抽象(复杂度)管理的有效方法。
继承支持了按层级分类的概念,有效管理复杂度。 - 多态
一个接口,多个方法。 - 互效作用
层级管理为基础,方便复用。
封装保证在不破坏依赖于类公共接口的代码的前提下,进行升级迁移。
多态性有利于编写易懂易读易修改的程序。
与C/C++语言相比
-
简单与健壮
-
c++ 里面内存要自己去管理,而java 里面有系统的垃圾回收器。
-
Java 中省去了对指针的操作,但并不是没有指针了,只是被封装了而已,代替指针的是种新的变量,叫做引用,这个引用里面也是保存的一个对象的地址,它和指针的差别就是比指针功能要弱化了,也更简单了。
-
安全
-
字节码的验证,c++ 中对指针的操作可能会导致内存栈的溢出,而在Java 里面不用我们去担心这些问题,这些统统有JVM 去替我们做。
-
Java 的跨平台性:用这个语言开发出来的程序可以在不同系统中运行。
-
不同系统的Java 虚拟机之前的源码和字节码部分都是跨平台的,从虚拟机就不是跨平台的了。这样Java 的字节码就可以直接用来传播,而不用传播源码了。
源码是怎样成为可执行代码:
源码--> 编译--> 目标码(二进制机器码)--> 连接--> 可执行文件
由此看来,汇编、C 、C++ 等语言都是不跨平台的,因为他们的编译过程就直接与当前系统挂钩了
注意:C 和C++ 源码都是跨平台的,我们所指的跨平台是基于编译过程中的跨平台,以上几种语言在不同的系统中编译出来的目标码是不同的。
Java 跨平台就是编译过程中的跨平台,怎么实现的呢,那就是Java 虚拟机,Java 的源码编译过程:
源码--> 编译--> 字节码--> 把字节码装载到虚拟机中运行--JAVA 虚拟机:JVM
屏蔽掉了不同平台的差异,为上层的字节码提供了一个统一的运行环境,虚拟机是为了给字节码提供统一的执行平台,每种操作系统所用的虚拟机是不同的,是为了统一JAVA 字节码的解析执行方式,如果没有虚拟机,在一种操作系统上写了JAVA 代码,编译成字节码后只能在本操作系统上运行,但是换一个操作系统的话就要重新再写一遍JAVA 代码然后重新编译,所以虚拟机提高了代码的复用性,实现了一次编写,多处使用的优点。
-
Java对每种数据类型都分配固定长度,即没有sizeof()
-
比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性,而Java则具有跨平台性。
-
类型转换不同.
-
在C和C++中,可通过指针进行任意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换.
-
结构和联合的处理.
-
在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面
主要特性
- 健壮
- 内存垃圾自动收集,应对(内存错误),异常处理机制应对(运行错误)。
- 结构中立
- 更新系统后,JVM仍然能让java程序运行。