Java程序设计课程总结.docx
- 文档编号:9901353
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:16
- 大小:29.86KB
Java程序设计课程总结.docx
《Java程序设计课程总结.docx》由会员分享,可在线阅读,更多相关《Java程序设计课程总结.docx(16页珍藏版)》请在冰点文库上搜索。
Java程序设计课程总结
Java程序设计课程总结
前言:
很高兴在本学期再次听邢老师课,当然也很遗憾本学期将要完整的结束了,在这里再次感谢邢老师在课堂上授课。
在即将学期结束的有限时间内,我写下了老师在课堂上讲的关于Java重点知识总结,并且在最后又对继承、多态的相关知识进行了详细总结。
Let’sBegin!
班级:
1320541
姓名:
刘创
学号:
132054137
2016年6月22日星期三
第一章:
Java系列环境概述
主要简单介绍了Java环境的安装、配置,以及第一个Java程序的设计、编译、运行等。
重点介绍了Javaapplet程序的建立与运行。
第二章:
Java语言基础
1.Java符号集:
标识符、关键字、运算符、分隔符、常量(注意:
标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。
)
2.标识符的命名规则
3.数据类型、常量、变量
原始数据类型:
boolean,byte,in,char,long,short,double,float
引用数据类型:
数组,类,接口
4.表达式和语句
表达式一般按运算符来分:
1)算术表达式(floatx=8.3f、i++)
2)关系表达式(3>7、3<7)
3)布尔逻辑表达式((5>4)&&true、!
false)
4)位运算表达式(a=34^3)
5)赋值表达式、条件表达式(b=100>89?
a=ture:
a=false)
6)复合表达式
第三章:
Java程序流程控制
1.选择结构程序控制:
if、else、以及其对应的嵌套语句、switch语句、条件运算符
If…语句
if(条件){
只有当条件为true时执行的代码
}
If...else语句:
if(条件){
当条件为true时执行的代码
}else{
当条件不为true时执行的代码
}
2.循环结构程序设计:
while语句、do-while语句、for语句、循环语句的比较、循环控制的要点、循环嵌套
3.break和continue语句
continue的意思是跳出本次循环然后再接着这个循环体再一次新执行一次,意思是还是在执行循环;
break则是跳出这次循环执行循环后的语句
第四章:
类与对象
1.类与对象的概念:
对象是现实世界中事物的抽象,是java程序的基本封装单位,是类的实例;类是对象的抽象,是数据和操作的封装体;属性是事物静态特征而操作是事物的动态特征。
比如分析以下代码:
classRectangle
{设计一个长方形类
Intlength;
Intwidth;类的属性,静态特征rectangle类
Intarea(intl,intw)
{
Return(length*width);类的方法(动态特征)
}
};
Rectanglerec=newRectangle();//创建对象
Rec.area(30,20);//引用方法求出对象的面积
2.封装机制
类的修饰符:
无修饰符、public修饰符、final、abstract
3.数据成员
1)数据成员的声明
2)数据成员的修饰符:
static
3)静态数据成员的使用、初始化
4)用final修饰的最终成员
4.成员方法
第五章:
消息、继承、多态
1.消息
2.访问控制public、protected、friendly、private
3.多态机制
4.继承机制
5.抽象类、接口与包
【注意:
关于本章的知识将在后面详细展开介绍】
第六章:
数组
1.一维数组一维数组的声明:
inta[];//声明a的一维整形数组
Inta[];a=newint[9];
2.一维数组引用举例
3.关于二维数组的声明、初始化和引用
二维数组的定义
typearrayName[][];
type[][]arrayName;
二维数组的初始化
1.静态初始化
intintArray[][]={{1,2},{2,3},{3,4,5}};
Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
2.动态初始化
1)直接为每一维分配空间,格式如下:
arrayName=newtype[arrayLength1][arrayLength2];
inta[][]=newint[2][3];
2)从最高维开始,分别为每一维分配空间:
arrayName=newtype[arrayLength1][];
arrayName[0]=newtype[arrayLength20];
arrayName[1]=newtype[arrayLength21];
arrayName[arrayLength1-1]=newtype[arrayLength2n];
3)例:
二维简单数据类型数组的动态初始化如下:
inta[][]=newint[2][];
a[0]=newint[3];
a[1]=newint[5];
对二维复合数据类型的数组,必须现金网96y.org首先为最高维分配引用空间,然后再顺次为低维分配空间。
而且,必须为每个数组元素单独分配空间。
例如:
Strings[][]=newString[2][];
s[0]=newString[2];//为最高维分配引用空间
s[1]=newString[2];//为最高维分配引用空间
s[0][0]=newString(Good);//为每个数组元素单独分配空间
s[0][1]=newString(Luck);//为每个数组元素单独分配空间
s[1][0]=newString(to);//为每个数组元素单独分配空间
s[1][1]=newString(You);//为每个数组元素单独分配空间
二维数组元素的引用
对二维数组中的每个元素,引用方式为:
arrayName[index1][index2]
例如:
num[1][0];
二维数组举例:
两个矩阵相乘
publicclassMatrixMultiply{
publicstaticvoidmain(Stringargs[]){
inti,j,k;
inta[][]=newint[2][3];//动态初始化一个二维数组
intb[][]={{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};//静态初始化一个二维数组
intc[][]=newint[2][4];//动态初始化一个二维数组
for(i=0;i2;i++)
for(j=0;j3;j++)
a[i][j]=(i+1)*(j+2);
for(i=0;i2;i++){
for(j=0;j4;j++){
c[i][j]=0;
for(k=0;k3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
System.out.println(*******MatrixC********);//打印MatrixC标记
for(i=0;i2;i++){
for(j=0;j4;j++)
System.out.println(c[i][j]+);
System.out.println();
}
}
}
第七章:
字符串类
1.String类
Stringc1=”java”;string类的构造方法、字符串的比较、字符串的操作、main方法中传递的字符串等
2.Stringbuffer类追加方法append()方法、insert()方法、setcharat()方法等
第八章:
集合类
1.线性结构的简介线性表、栈、队列
2.集合与集合框架set、list、map、queue
3.Collection接口iteration迭代器
4.List接口与实现类arraylist、linklist
5.Set接口
6.Map接口
7.Collection算法类addall()方法、sort()方法、reserve()方法
第九章:
文字与图形GUI设计
1.Gui设计概述swing的组件、控制applet运行状态的基本方法、japplet类、graphics2d对象
2.绘制文字font类
3.Color类设置文字背景等的颜色
4.绘制形状图形
1)绘制线段与矩形
2)绘制椭圆、圆及弧
3)绘制多边形
第十章:
常用组件GUI设计
1.布局管理器
1)Borderlayout
2)Flowlayout
3)Cardlayout
4)Gridlayout
5)Boxlayout
2.窗口与面板容器
1)Jframe容器
2)Jpanel容器
3.事件响应原理
1)委托事件模型
2)Java.awt.event事件类的继续关系
3)事件与事件源的关系
4)Swing中的事件与事件监听器
4.Jabel组件
5.Jbutton组件与jtohhlebutton组件actionEvent事件及其响应
6.Jcheckbox和jradiobutton组件
7.Jcombox组件
8.Jlist组件
9.Jtextfield与jtextarea组件
第十一章:
高级组件GUI设计
1.事件适配器
适配类
中文名称
接口
Componentadapter
组件适配器
Compoentlistener
Comtaineradapter
容器适配器
Containerlistenerr
Foucusadapter
焦点适配器
Focuslistener
Keyadapter
键盘适配器
Keylistener
Mouseadapter
鼠标适配器
Mouselistener
Mousemotionlistener
Mousewheellistener
Mousemotionadapter
鼠标运动适配器
Mousemotionlistener
Windowadapter
窗口适配器
Windowfocuslistener
Windowlistener
Windowstatelistener
2.Keyevent事件及其响应
3.Mouseevent事件及其响应
4.Windowevent事件及其响应
5.Jscrollpane与jsrollbar组件
6.Jtabbedpane容器
7.菜单的设计
8.对话框的设计
第十二章:
异常处理
1.Java异常处理机制
异常类层次图:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.Error
java.lang.ThreadDeath
2.Java异常处理语句try、catch、finally、throw、throws
try{
程序代码
}catch(异常类型1异常的变量名1){
程序代码
}catch(异常类型2异常的变量名2){
程序代码
}finally{
程序代码
}
第十三章:
多线程
1.Java中的多线程实现技术
线程的生命周期:
新生、就绪、运行、阻塞、死亡
2.多线程的管理线程调度、线程优先级
还有其他输入输出、jdbc连接数据库等知识。
关于java继承、多态的详细总结
一、继承:
继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法的方式,产生一个新的类型。
继承是面向对象的三个基本特征--封装、继承、多态的其中之一,我们在使用java时编写的每一个类都是在继承,因为在java语言中,java.lang.object类是所有类最根本的基类(或者叫父类、超类),如果我们新定义的一个类没有明确地指定继承自哪个基类,那么java就会默认为它是继承自object类的。
可以把java中的类分为以下三种:
1.普通类:
使用class定义且不含有抽象方法的类。
2.抽象类:
使用abstractclass定义的类,它可以含有,也可以不含有抽象方法。
3.接口类:
使用interface定义的类。
在这三种类型之间存在下面的继承规律:
普通类可以继承(extends)普通类,可以继承(extends)抽象类,可以继承(implements)接口。
抽象类可以继承(extends)普通类,可以继承(extends)抽象类,可以继承(implements)接口。
接口只能继承(extends)接口。
一个普通类继承一个接口后,必须这个接口中定义的所有方法,否则就只能被定义为抽象类。
我在这里之所以没有对implements关键字使用“实现”这种说法是因为从概念上来说它也是表示一种继承关系,而且对于抽象类implements接口的情况下,它并不是一定要实现这个接口定义的任何方法,因此使用继承的说法更为合理一些。
以上三条规律同时遵守下面这些约束:
1.普通类和抽象类都只能最多继承一个普通类,或者最多继承一个抽象类,并且这两种情况是互斥的,也就是说它们要么继承一个普通类,要么继承一个抽象类。
2.普通类、抽象类和接口在继承接口时,不受数量的约束,理论上可以继承无限多个接口。
当然,对于普通类来说,它必须实现它所继承的所有接口中定义的全部方法。
继承给我们的编程带来的好处就是对原有类的复用(重用)。
就像模块的复用一样,类的复用可以提高我们的开发效率,实际上,模块的复用是大量类的复用叠加后的效果。
除了继承之外,我们还可以使用组合的方式来复用类。
所谓组合就是把原有类定义为新类的一个属性,通过在新类中调用原有类的方法来实现复用。
如果新定义的类型与原有类型之间不存在被包含的关系,也就是说,从抽象概念上来讲,新定义类型所代表的事物并不是原有类型所代表事物的一种,比如黄种人是人类的一种,它们之间存在包含与被包含的关系,那么这时组合就是实现复用更好的选择。
下面这个例子就是组合方式的一个简单示例:
Java继承代码举例
class A ...{
public String show(D obj){
return ("A and D");
}
public String show(A obj){
return ("A and A");
}
}
class B extends A...{
public String show(B obj){
return ("B and B");
}
public String show(A obj){
return ("B and A");
}
}
class C extends B{}
class D extends B{}
使用继承和组合复用原有的类,都是一种增量式的开发模式,这种方式带来的好处是不需要修改原有的代码,因此不会给原有代码带来新的错误,也不用因为对原有代码的修改而重新进行测试,这对我们的开发显然是有益的。
因此,如果我们是在维护或者改造一个原有的系统或模块,尤其是对它们的了解不是很透彻的时候,就可以选择增量开发的模式,这不仅可以大大提高我们的开发效率,也可以规避由于对原有代码的修改而带来的风险。
自己对java中的深刻理解:
这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
比如可以分隔符先定义一个类叫车,车有以下属性:
车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
二、多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态是面向对象的重要特性,简单点说:
“一个接口,多种实现”,就是同一种事物表现出的多种形态。
编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来,再通过这个抽象的事物,与不同的具体事物进行对话。
对不同类的对象发出相同的消息将会有不同的行为。
举例说明:
比如我们说“宠物”这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。
那么我到宠物店说“请给我一只宠物”,服务员给我小猫、小狗或者蜥蜴都可以,我们就说“宠物”这个对象就具备多态性。
再回想一下经理和职员的关系,经理类具有父类职员类的所有属性、成员和方法。
这就是说,任何在Employee上的合法操作在Manager上也合法。
如果Employee有raiseSalary()和fire()两个方法,那么Manager类也有。
在这种Manager继承Employee的情况下,一个Employee既可以是一个普通的Employee类,也可以是一个Manager类。
也就是说下述表示都是对的:
Employeee=newEmployee();Employeee=newManager();从上面可以看到:
同一个行为Employee具有多个不同的表现形式(既可以是一个普通的Employee类,也可以是一个Manager类),这就被称为多态。
注意:
方法没有多态的说法,严格说多态是类的特性。
但是也有对方法说多态的,了解一下比如前面学到的方法覆盖称为动态多态,是一个运行时问题;方法重载称为静态多态,是一个编译时问题。
多态与类型一个对象只有一个格式(是在构造时给它的)。
但是,既然变量能指向不同格式的对象,那么变量就是多态性的。
也就是说一个对象只有一种形式,但一个变量却有多种不同形式。
象大多数面向对象语言一样,Java实际上允许父类类型的引用变量指向一个子类的对象。
因此,可以说:
Employeee=newManager()使用变量e是因为,你能访问的对象部分只是Employee的一个部分;Manager的特殊部分是隐藏的。
这是因为编译者应意识到,e是一个Employee,而不是一个Manager。
因而,下述情况是不允许的:
e.department="Finance";//非法的,编译时会出错可能有的人会不理解,为什么明明是new的一个Manager,却不能访问Manager的属性数据。
原因在于编译的时候,变量e是一个Employee的类型,编译器并不去管运行时e指向的具体对象是一个Employee的对象,还是一个Manager的对象,所以它只能访问到Employee里面定义的属性和方法。
所以说编译时看数据类型。
那么要想访问到Manager里面的department该怎么办呢?
这就需要先对e进行强制类型转换,把它还原成为Manager类型,就可以访问到Manager里面的属性和方法了,如下:
Employeee=newManager();Managerm=(Manager)e;m.department="开发部";//这就是合法的了
多态的作用:
1.应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。
大大提高程序的可复用性。
2.派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。
多态的经典代码举例:
classParent
{
privateStringname="parent";
publicStringgetName()
{
returnthis.name;
}
publicvoiddoSomething(Parentobj)
{
//输出类名
System.out.println(obj.getName());
}
publicstaticvoidmain(String[]args)
{
ParentobjP=newParent();
objP.doSomething(newA());
//传递A的引用,则调用的是A类的getName方法
objP.doSomething(newB());
//传递B的引用,则调用的是B类的getName方法
}
}
classAextendsParent
{
privateStringname="classA";
//@重写getName()方法
publicStringgetName()
{
returnthis.name;
}
}
classBextendsParent
{
privateStringname="classB";
//@重写getName()方法
publicStringgetName()
{
returnthis.name;
}
}
对以上代码进行分析:
父类的doSomething方法多态地调用了我们传递的对象的getName方法,而不是Parent类本身的getName方法,这就是多态给我们带来的方便。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 课程 总结
![提示](https://static.bingdoc.com/images/bang_tan.gif)