Java课程总结.docx
- 文档编号:4366988
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:19
- 大小:129.17KB
Java课程总结.docx
《Java课程总结.docx》由会员分享,可在线阅读,更多相关《Java课程总结.docx(19页珍藏版)》请在冰豆网上搜索。
Java课程总结
15/16学年第二学期
《Java课程总结》
1420561
班级:
21
学号:
刘翔翔
姓名:
第一章Java系统环境概述
1.Java语言特点
Java语言来自美国加州的SunMicrosystem公司,Sun公司的Java白皮书中对Java有的定义:
“ava:
Asimple,Object-oriented,distributed,robust,secure,architecture-neutral,portable,High-performance,multi-threaded,anddynamiclanguage.”。
按照这个定义,Java是一种具有“简单、面向对象的、分布式、解释型、健壮、安全、与体系结构无关、可移植的,高性能、多线程和动态执行”等特性的语言。
以下作简要概述:
简单性:
Java与C++相比,不再支持运算符重载、多级继承及广泛的自动强制等易混淆和较少使用的特性,而增加了内存空间自动垃圾收集的功能,复杂特性的省略和实用功能的增加使得开发变得简单而可靠。
简单化的另一个方面是Java的系统非常小,其基本解释和类支持部分只占40KB,附加的基本标准库和线程支持也只需增加175KB。
因此,Java应用软件能在相当小的系统之上独立工作。
平台独立性:
这是Java最吸引人的地方。
由于它采用先编译成中间码(字节码),然后装载与校验,再解释成不同的机器码来执行,即“Java虚拟机”的思想,“屏蔽”了具体的“平台环境”特性要求,使得只要能支持Java虚拟机,就可运行各种Java程序。
面向对象的技术:
面向对象(O-O)的技术是近年来软件开发中用得最为普遍的程序设计方法,它通过把客观事物进行分类组合、参数封装、用成员变量来描述对象的性质、状态,而用方法(成员函数)来实现其行为和功能。
O-O技术具有继承性、封装性、多态性等众多特点,Java在保留这些优点的基础上,又具有动态联编的特性,更能发挥出面向对象的优势。
多线程:
多线程机制使应用程序能并行执行,Java有一套成熟的同步原语,保证了对共享数据的正确操作.通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为。
动态性:
Java的设计使它适合于一个不断发展的环境。
在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。
并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
安全性:
Java有建立在公共密钥技术基础上的确认技术.指示器语义的改变将使应用程序不能再去访问以前的数据结构或是私有数据,大多数病毒也就无法破坏数据.因而,用Java可以构造出无病毒、安全的系统。
Java语言除上述主要特点外,还有高性能、分布性、强大性、解释性、可移植性等。
2.Java运行环境(了解)及程序的运行步骤
Java程序是运行在JVM虚拟机上的,要了解Java程序的执行过程和运行原理,就必须了解JVM虚拟机。
每一个Java语言编写的Java源程序,都要经过Java编译器编译,产生面向JVM的字节码,在由JVM的执行引擎(解释器)执行,并产生执行效果。
一个Java语言程序的编译、解释和执行过程如下图所示:
JVM是可以运行Java字节码的假象计算机,是Java面向网络的核心,支持Java面向网络体系结构三大支柱(平台无关性、安全性和网络移动性)的所有方面。
其主要任务是装载.class文件。
JVM的内部体系结构如下图所示(主要分为三部分:
类装载器子系统、运行时数据区和执行引擎):
(1)类装载子系统:
负责装载所有由用户自己编写生成的.class文件以及这些.class文件引用的JDKAPI。
(2)执行引擎:
负责将字节码翻译成使用与本地及=机系统的机器码,然后再送硬件执行。
(3)运行时数据区:
主要包括方法区、Java堆、Java栈、PC寄存器、本地方法栈等。
有以下三点需要提出:
●每个JVM实例都有一个方法区和堆。
方法区主要存放类加载器加载的.class文件、类的静态变量。
堆主要存放所有程序在运行时创建的对象和数组。
方法区和堆有所有线程共享。
●每个线程都有自己的PC寄存器和Java栈。
P从寄存器的值指向下一条将被执行的指令。
Java栈记录存储该线程中Java方法调用的状态。
每当启动一个新线程,JVM都会创建一个新的Java栈,用于保存线程的运行状态,包括局部变量、参数、返回值、运算的中间结果。
●本地方法栈:
存储本地方法调用的状态。
当启动一个Java程序时,就会产生一个JVM实例。
程序关闭退出后这个JVM实例也就随之消亡。
每个Java程序都运行在自己的JVM实例中。
JVM实例通过调用某个初始类的main()方法来运行一个Java程序。
3、Application与Applet的区别
Java语言是一种半编译半解释的语言。
Java的用户程序分为两类:
JavaApplication和JavaApplet。
这两类程序在组成结构和执行机制上都有一定的差异,主要体现在以下几方面:
(1)运行方式不同。
JavaApplication是完整的程序,可以独立运行;JavaApplet程序不能单独运行,它必须嵌入到用HTML语言编写的Web页面中,通过与Java兼容的浏览器来控制执行。
(2)运行工具不同。
JavaApplication程序被编译以后,用普通的Java解释器就可以使其边解释边执行,而JavaApplet必须通过网络浏览器或者Applet观察器才能执行。
(3)程序结构不同。
每个JavaApplication程序必定含有一个并且只有一个main方法,程序执行时,首先寻找main方法,并以此为入口点开始运行。
含有main方法的那个类,常被称为主类,也就是说,JavaApplication程序都含有一个主类。
而Applet程序则没有含main方法的主类,这也正是Applet程序不能独立运行的原因。
尽管Applet没有含main方法的主类,但Applet一定有一个从java.applet.Applet派生的类,它是由Java系统提供的。
(4)受到的限制不同JavaApplication程序可以设计成能进行各种操作的程序,包括读/写文件的操作,但是JavaApplet对站点的磁盘文件既不能进行读操作,也不能进行写操作。
然而,由于Applet的引入,使Web页面具有动态多媒体效果和可交互性能,这使由名为超文本、实为纯文本的HTML语言编写成的Web页面真正具有了超文本功能,不但可以显示文本信息,而且还可以有各种图片效果和动态图形效果,从而使页面显得生动美丽;另外,Applet使Web页面增加了按钮等功能,从而增加了交互性。
第二章Java语言基础及第三章结构控制
1、Java标识符的规定
标识符:
标识符就是给变量、类或方法起的名字。
可以用字母、下划线或美元符号开头,区分大小写,没有最大长度限制。
(关键字除外)
关键字:
标准的命名规则:
类名:
首字母大写,其余小写。
如有多个单词组成,则每个单词的首字母大写。
例如:
ImageSpride
包名:
一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO3166标准所指定的标识国家的英文双字符代码。
包名的后续部分根据不同机构各自内部的命名规范而不尽相同。
这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(loginnames)。
例如:
com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese等。
接口:
命名规则:
大小写规则与类名相似。
例如:
interfaceRasterDelegate;
方法:
方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
例如:
run();runFast();
变量:
除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。
变量名应简短且富于描述。
变量名的选用应该易于记忆,即,能够指出其用途。
尽量避免单个字符的变量名,除非是一次性的临时变量。
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。
例如:
charc;inti;。
实例变量:
大小写规则和变量名相似,除了前面需要一个下划线。
int_employeeId;String_name;。
常量:
类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。
(尽量避免ANSI常量,容易引起错误)staticfinalintMIN_WIDTH=4;staticfinalintMAX_WIDTH=999;。
2、Java的数据类型
Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。
数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。
实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类java.lang.Void,不过我们无法直接对它们进行操作。
8中类型表示范围如下:
byte:
8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:
16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:
32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:
64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:
32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:
64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:
只有true和false两个取值。
char:
16位,存储Unicode码,用单引号赋值。
Java决定了每种简单类型的大小。
这些大小并不随着机器结构的变化而变化。
这种大小的不可更改正是Java程序具有很强移植能力的原因之一。
下表列出了Java中定义的简单类型、占用二进制位数及对应的封装器类。
对于数值类型的基本类型的取值范围,它们的值都已经以常量的形式定义在对应的包装类中了
此外,Java有5种引用类型(对象类型):
类接口数组枚举标注。
3、分支及循环语句,break,continue
break语句:
break语句通常有不带标号和带标号两种形式:
break;
breaklab;
其中:
break是关键字,lab是用户定义的标号。
break语句虽然可以独立使用,但通常用于switch结构和循环结构中,控制程序的执行流程转移。
Break语句的应用有下列三种情况:
(1)break语句在switch语句中,其作用是强制退出switch结构,执行switch结构后的语句。
(2)break语句用在单层循环结构的循环体中,其作用是强制退出循环结构。
若程序中有内外两层循环,而break语句写在内循环中,则执行break语句只能退出内循环,儿不能退出外循环。
若想退出外循环,可使用带标号的break语句。
(3)breaklab语句用在循环语句中(必须在外循环入口语句的前方写上lab标号),可使程序流程退出标号所指明的外循环。
continue语句:
continue语句只能用于循环结构中,其作用是使循环短路。
有以下两种形式:
continue;
continuelab;
其中:
continue是关键字,lab是用户定义的标号。
(1)continue语句也称为循环短路语句。
可以跳过某个循环语句块的一次执行
(2)continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环。
4、程序的基本格式,熟悉分支及循环程序设计
程序的基本格式:
大括号对齐、遇到{缩进,(Tab/Shift+Tab)、程序块之间加空行、并排语句之间加空格、运算符两侧加空格、{前面有空格、成对编程。
分支结构程序设计:
Java语言提供了两条基本的分支选则语句:
if和switch。
由这两条语句可以形成三种形式的选择结构:
双分支选择结构、单分支选择结构、多分支选择结构。
循环结构程序设计:
循环语句的作用是反复执行一段程序代码,直到满足终止条件为止。
Java语言提供的循环语句有while语句、do-while语句和for语句。
这些循环语句各有特点,可以根据不同的情况选择使用。
第四章类与对象及第五章消息、继承与多态
1、熟悉类、对象的创建方法
类的创建:
定义(创建)类的过程,实际上就是进行Java程序设计的过程,一个Java源程序文件往往是由许多个类组成的,从用户的角度可分为两类:
系统定义的类和用户自己定义的类。
用户自定义的类的格式一般如下:
修饰符class类名extends父类名implements接口名
{
数据成员
成员方法
}
对象的创建:
创建对象通常包括声明引用变量、创建对象和初始化对象三步。
声明引用变量的格式如下:
类名引用变量表明;
创建对象,通常由new关键字来实现这一步骤,格式如下:
引用变量名=new构造方法();
初始化对象,即为它的数据成员赋初始值的过程,有三种方法如下:
第一种使用默认初始化原则赋初值,第二种是用赋值语句赋初值,第三种是由Java提供的专用方法来完成,这个方法称为构造方法。
2、构造函数、成员方法、封装等概念
构造方法是一种特殊的方法,具有以下特点:
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(5)构造方法可以重载,以参数的个数,类型,顺序。
成员方法:
类包括成员变量和方法两部分。
成员变量表示类的属性,成员方法是数据的操作的定义。
在JAVA中,方法只能作为类的成员,也称为成员方法。
方法操作类所定义的数据,以及提供对数据的访问的代码。
大多数情况下,程序的其他部分都是通过类的方法和其他类的实例进行交互的。
在类中,除了变量外的都是成员方法。
方法中有一种是对成员变量进行初始化的,称为构造方法。
所以说成员方法分为构造方法和一般的方法。
封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。
面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
封装是一种信息隐藏技术,在java中通过关键字private实现封装。
封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。
3、访问控制符:
public、private、protected
类、数据成员和成员方法的访问控制符及其作用
Public
省缺
Public
所有类
包中类(含当前类)
Protected
包中类(含当前类)
包中类(含当前类)
省缺(friendly)
包中类(含当前类)
包中类(含当前类)
Private
当前类本身
当前类本身
4、多态机制:
覆盖、重载
多态的概念:
多态是指一个程序中同名的不同方法共存的情况。
这些方法同名的原因是它们的最终功能和目的都相同,但是由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同的具体内容的方法,来代表多种具体实现形式。
Java提供两种多态机制:
重载与覆盖。
方法重载:
在同一类中定义了多个同名而不同内容的成员方法时,我们称这些方法是重载(Override)的方法。
重载的方法主要通过形式参数列表中参数的个数、参数的数据类型和参数的顺序等方面的不同来区分的。
在编译期间,Java编译器检查每个方法所用的参数数目和类型,然后调用正确的方法。
覆盖:
由于面向对象系统中的继承机制,子类可以继承父类的方法。
但是,子类的某些特征可能与从父类中继承来的特征有所不同,为了体现子类的这种个性,Java允许子类对父类的同名方法重新进行定义,即在子类中定义与父类中已定义的相同名而内容不容的方法。
这种多态被称为覆盖(Overload)。
由于覆盖的同名方法是存在于子类对父类的关系中,所以只需在方法引用时指明引用的是父类的方法还是子类的方法,就可以很容易地把它们区分开来。
第六章数组及第七章字符串类
1、一维数组的定义、初始化及引用
一维数组的声明(定义):
“先声明,后使用”-数组声明两种格式:
类型标识符数组名[];
类型标识符[]数组名;
例如:
intabc[];或double[]example2;
1)数组名是符合Java标识符定义规则的用户自定义标识符。
2)数组的维数用方括号(“[]”)的个数来确定,声明时不用指定元素个数。
3)数组元素的数据类型可以是Java的任何数据类型,如基本类型(int、float等),引用类型(如类或接口等)。
一维数组的初始化:
数组初始化时,指出数组元素的个数,进行内存空间的分配。
数组经过初始化后,其长度(即可存放元素的个数)不可再改变。
(1)直接指定初值的方式,即在声明一个数组的同时给这个数组的所有数组元素赋上初始值。
(2)用关键字new初始化数组
用关键字new初始化数组,除了为数组分配存储空间,还按照java默认原则初始化数组元素。
1)先声明数组,再初始化数组。
格式如下:
类型标识符数组名[];
数组名=new类型标识符[数组长度];
注意:
数组长度通常是整型常量,用以指明数组元素的个数。
2)在声明数组的同时用new关键字初始化数组。
格式如下:
类型标识符数组名[]=new类型标识符[数组长度]或
类型标识符[]数组名=new类型标识符[数组长度]
一维数组的引用:
当数组定义并初始化后才可以引用数组中的元素。
一维数组元素的引用格式:
arrayName[index]
其中:
(1)index为数组下标,可是整数也可是表达式。
(2)数组下标的从0开始,长度为n的数组,下标取值范围是0~n-1。
(3)每个数组都有一个length属性,指明数组长度。
2、二维数组的定义、初始化及引用
二维数组的声明:
二维数组的声明与一维数组类似,只是需要给出两对方括号,其格式如下:
类型说明符数组名[][];或
类型说明符[][]数组名;
二维数组的初始化
(1)用new操作符初始化数组
先声明数组再初始化数组。
格式如下:
数组名=new类型说明符[数组长度][];或这样定义:
数组名=new类型说明符[数组长度][数组长度];
在声明数组时初始化数组。
格式如下:
类型说明符[][]数组名=new类型说明符[数组长度][];或
类型说明符数组名[][]=new类型说明符[数组长度][数组长度];
(2)直接指定初值的方式
例如:
int[][]arr1={{3,-9,6},{8,0,1},{11,9,8}};
用指定初值的方式对数组初始化时,各子数组元素的个数可不同。
二维数组的引用:
(1)测定数组的长度及数组赋值
“数组名.length”为测定的是数组的行数
“数组名[i].length”表示第i行的列数
(2)数组名作为成员方法的参数
与一维数组类似,二维数组的数组名也可以作为参数传递给成员方法。
3、String类与StringBuffer类的区别
String类创建的对象在操作中不能变动和修改字符串的内容,因此也被称为字符串常量。
StringBuffer类创建的对象在操作中可以更改字符串的内容,因此也被称为字符串变量。
StringBuffer类(字符串缓冲器类)与String类不同,StringBuffer类是一个在操作中可以更改和变动其内容的字符串类。
也就是说对于StringBuffer类的对象不仅能进行查找和比较等操作,也可以做添加、插入、修改之类的操作。
4、关于数组和循环结构的简单编程
用字符数组保存一个句子,然后循环遍历所有的内容,实现修改、查找等操作。
第八章集合类
1、集合框架的概念
Java集合框架API是用来表示和操作集合的统一框架。
为了使整个集合框架中的类便于使用,Java提供了标准的接口,允许不同类型的集合以相同的方式和高度互操作方式工作,使得集合容易扩展和修改。
集合框架包含三部分:
接口、实现及算法。
2、集合类相关的几个接口和几个类
常用的集合接口框架
接口
实现的功能
Collection
一个独立元素的集合
List
有序集合
Set
不包含重复元素的集合
SortedSet
不包含重复元素且按升序排列的集合
Map
不包含重复key的一组key-value对元素集合
SortedMap
在Map的基础上,增加了排序功能的集合
Iterator
一个可单向遍历集合的迭代器
ListIterator
一个可双向遍历集合的迭代器
3、掌握collections算法类的应用
Java.util.Collections算法类提供一些静态的方法实现了对集合进行排序、替换、交换、搜索、拷贝等操作。
addAll():
将所有指定元素添加到指定collection中
sort():
排序
reverse():
逆序排序
shuffle():
随机排序
repalceAll():
替换元素
binarySearch():
二分查找特定对象
swap:
交换指定位置元素
第九章文字与图形GUI设计及第十章常用组件GUI设计及第十一章高级组件GUI设计
1、事件响应原理
委托事件模型:
Java采用委托事件模型来处理事件。
委托事件模型由事件源、事件(Event)及事件监听器(Listener)组成。
委托事件模型的特点是将事件的处理委托给事件监听器,而不是组件本身。
(1)事件源与事件
如果在一个图形用户界面上,点击按钮后改变了界面上的内容,这就意味着这个界面上的按钮组件可以触发一个事件。
我们称这个按钮组件是事件源。
因此,事件源是能够接收外部事件的源体(一些组件),是事件的产生者。
事件源会在事件产生时,将与该事件及事件源相关的信息封装在事件中。
当事件被触发时,事件将被一个或多个“事件监听器”接收,事件监听器负责处理事件。
所以,事件发生的地方可以与事件处理的地方分离
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)