计算机由五大部件组成:
1、运算器
2、控制器
3、存储器
4、输入设备
5、输出设备
计算机之父——冯.诺依曼
软件的概念
IEEE:软件是计算机程序、方法、规则、相关的文档以及在计算机上运行它时所必需的数据。
软件=程序+数据+文档
阿达·洛芙莱斯
阿达·洛芙莱斯(Augusta Ada King, Countess of Lovelace,1815年12月10日-1852年11月27日),世界上第一个程序员(媛),原名奥古斯塔·阿达·拜伦(Augusta Ada Byron),通称阿达·洛芙莱斯(Ada Lovelace),是著名英国诗人拜伦之女,数学家。计算机程序创始人,建立了循环和子程序概念。
为计算程序拟定“算法”,写作的第一份“程序设计流程图”,被珍视为“第一位给计算机写程序的人”。为了纪念阿达·洛芙莱斯对现代电脑与软件工程所产生的重大影响,美国国防部将耗费巨资、历时近20年研制成功的高级程序语言命名为Ada语言,它被公认为是第四代计算机语言的主要代表
语言的发展不是高一代取代低一代,是多代共存。
1、让C开发的程序运行起来的条件:main
2、让Java开发的程序运行起来的条件:类 + main
标识符可以由任意顺序的大小写字母、数字、下划线(_)和美元符号($)组成,但不能以数字开头,不能是Java中的关键字。
在C/C++中,int和long等数据类型的大小与目标平台相关。例如:在8086系列的16位处理器上整型数值占2个字节;在32位处理器(Pentium或SPARC)上为4个字节;在64位处理器上则为8个字节。由于存在这些差别,这对编写跨平台程序带来了很大的困难。在Java中,所有的数值类型所占的字节数量与平台无关。
按照运算符功能来分,基本的运算符有下面几类。
算术运算符 +、-、*、/、%、++、–
关系运算符 >、<、>=、<=、==、!=
逻辑运算符 !、&&、||、&、| 、^
位运算符 >>、<<、>>>、&、|、^、~
赋值运算符 =、扩展赋值运算符,如+=、/=等。
条件运算符 ? :
其他运算符 包括分量运算符.、下标运算符[ ]、实例运算符instanceof、内存分配运算符new、强制类型转换运算符(类型)、方法调用运算符( )等。
用new分配内存的同时,数组的每个元素都会自动赋默
认值,整型为0,实数为0.0,布尔型为false,引用型为
null。
模块化封装、功能化分类、结构化清晰
把一组数据结构和处理他们的方法组成了对象(Object)。
把相同行为的对象归纳为类(Class)。
通过封装(encapsulation)隐藏内部细节。
通过继承(inheritance)实现类的特化/泛化。
通过多态(polymorphism)实现基于对象类型的动态分派。
从某一构造方法内调用另一构造方法,必须通过关键字this来调用的,否则编译出错。
this关键字必须写在构造方法内的第一行位置。
main方法的访问权限为何必须为public,static?
由于JVM需要在类外调用main方法,而且JVM运行时相同在开始执行一个程序前,并没有创建main方法所在的类的一个实例对象,所以它只能通过类名来调用main方法作为程序的入口,因而该方法必须是static。
如果用final来修饰类的成员,则该成员为最终成员。
若父类的成员不希望被子类的成员所覆盖,则可将它们声明为final。
最终类:用final修饰的类。该类不能有子类。
成员变量若同时被static和final修饰,则表示常量,若没有初始化则按默认值初始化。
仅用final不用static修饰则必须且只能赋值一次,不能默认。方式:定义时赋值;构造方法赋值。
垃圾回收的特点:
只有当一个对象不被任何引用类型的变量使用时,它的内存才可能被垃圾回收器回收;
不能通过程序强迫回收器立即执行;
当垃圾回收器将要释放无用对象的内存时,先调用该对象的finalze()方法。
程序(Program):程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,程序是静态的代码。
进程(Process):进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。
多任务(Multi task):多任务是指在一个系统中可以同时运行多个程序,即有多个独立运行的任务,每一个任务对应一个进程。
线程(Thread):线程是一个比进程更小的执行单位。一个进程在其执行过程中可以产生多个线程,形成多条执行线路。
两种创建线程对象的方式的特点:
直接继承Thread类的特点是:编写简单,可以直接操纵线程;但缺点是若继承Thread类,就不能再继承其他类。
使用Runnable接口的特点是:可以将Thread类与所要处理的任务的类分开,形成清晰的模型;还可以从其他类继承,从而实现多重继承的功能。
线程间的数据共享
建立Thread子类和实现Runnable接口都可以创建多线程,但它们的主要区别就在于对数据的共享上。使用Runnable接口可以轻松实现多个线程共享相同数据,只要用同一个实现了Runnable接口的类的对象作为参数创建多个线程就可以了。
多线程的同步控制
synchronized的功能是:首先判断对象或方法的互斥锁是否在,若在就获得互斥锁,然后就可以执行紧随其后的临界代码段或方法体;如果对象或方法的互斥锁不在(已被其他线程拿走),就进入等待状态,直到获得互斥锁。
注意:当被synchronized限定的代码段执行完,就释放互斥锁。
线程之间的通信
多线程的执行往往需要相互之间的配合。为了更有效地协调不同线程的工作,需要在线程间建立沟通渠道,通过线程间的“对话”来解决线程间的同步问题,而不仅仅是依靠互斥机制。
java.1ang.Object类的wait()、notify()等方法为线程间的通信提供了有效手段