课程总结
JAVA课程总结
一学期的Java学习就此完毕,学的东西很多,并且它遍布在实际生活中每个地方,但是我目前能掌握的东西还很少,真的觉得自己时间多,但是太懒了。后面学习的路还长,在此还是要谢谢学习上的领路人:李津老师和助教;没你们的指导,我们的水平只会更低。学无止境,加油,冲冲冲!
类与对象
类是客观存在的,抽象的,概念的东西。
对象是具体的,实际的,代表一个事物。例如:车是一个类,汽车,自行车就是他的对象。
关于类与对象的描述:类是对象的模版,对象是类的一个个体。
类的定义:
class 类名称{
数据类型 属性;
·····
public 返回值的数据类型 方法名称(参数1,参数2,···)
程序语句;
[return 表达式;]
}
}
对象的创建:
类名 对象名称=new 类名();
如果一个对象要被使用,则对象必须被实例化。
构造方法:
class 类名称{
访问权限 类名称(类型1 参数1,类型2,参数2,···)
程序语句;
·····
}
}
继承
继承:在Java类中只允许单一继承,即一个子类只可以继承一个父类,且子类将继承父类的非私有属性和方法,但父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。
方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。
this和super差异:
1.super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
2.super()和this()均需放在构造方法内第一行。
3.this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然
也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
4.this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
final关键字:
1)使用final声明的类不能有子类
2)使用final声明的方法不能被子类所覆写
3)使用final声明的变量即为常量,不可修改
4)使用final声明变量时,要求全部的字母大写
接口
接口可以理解为一种特殊的类
1.接口的定义:
interface 接口名称{
全局常量;
抽象方法;
}
在接口中如果不写public,则也是public访问权限,接口中的方法永远是public。
2.接口实现
接口的使用要通过子类,子类通过implements关键字实现接口
class 子类 implements 接口A,接口B,····{
//一个子类可以同时实现多个接口
}
对象的多态性
对象的多态性主要分两种类型:
(1)向上转型:子类对象->父类对象
(2)向下转型:父类对象->子类对象
对象转型
对象向上转型:父类 父类对象=子类实例 //向上转型,程序会自动完成
对象向下转型:子类 子类对象=(子类)父类实例
如果对象发生了向上转型关系,所调用的方法一定是被子类覆写过的方法,若一种方法只在子类中定义,
而没有在父类中定义,如果要想调用子类定义的其他方法,肯定要使用子类实例。
对象在进行向下转型之前,必须首先发生对象向上转型,否则会出现对象转换异常。
抽象类:
1.是以abstract关键字声明的一个类
2.抽象类不可以被实例化。因为用抽象方法无意义。
3.抽象类必须由其子类覆盖了所有的抽象方法,该子类才可以被实例化,否则这个子类还是抽象类。
自我理解:就比如说我们要编写一个计算矩形、三角形和圆的面积与周长的程序,若按前面所学的方式编程,我们必须定义四个类:圆类、三角形类、矩形类和使用前三个类的公共类,它们之间没有继承关系.但我们可以看出上面的公式不同但目标相同,所以我们可以为这三个类抽象出一个父类,在父类里定义圆、三角形和矩形三个类共同的数据成员及成员方法。这就是抽象类。
接口与类相似点:
1.一个接口可以有多个方法。
2.接口文件保存在 .java 结尾的文件中,文件名使用接口名。
3.接口的字节码文件保存在 .class 结尾的文件中。
4.接口相应的字节码文件必须在与包名称相匹配的目录结构中。
接口与类的区别:
1.接口不能用于实例化对象。
2.接口没有构造方法。
3.接口中所有的方法必须是抽象方法。
4.接口不能包含成员变量,除了 static 和 final 变量。
5.接口不是被类继承了,而是要被类实现。
6.接口支持多继承。
异常
异常:异常时导致程序中断运行的一种指流,如果不对其处理会导致程序运行中断并造成一定的损失。
异常中,Throwable 类是 Java 语言中所有错误或异常的超类。Error和Exception 是 Throwable 的子类,Error用于指示合理的应用程序不应该试图捕获的严重问题。JAVA提供了异常处理机制异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。
多线程
多线程的使用,多线程是java开发中很重要的一部分,在实际生活中用到多线程的地方很多比如:售票、滴滴司机的接单。多线程在我的理解中就是以并发为主的应用,不过这也算因为现阶段学习的很浅显,能做到适当的应用就好了。同时在多线程中现应用的最多的就是同步,并且应用最多的就两种同步方法
1.同步方法
synchronized关键字修饰的方法 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。
代码如:
public synchronized void save(){
}
2.同步代码块
即有synchronized关键字修饰的语句块。 被该关键字修饰的语句块会自动被加上内置锁,从而实现同步
代码如:
synchronized(object){
}
字节流与字符流的基本操作:
1.使用File类打开一个文件。
2.通过字节流或者字符流的子类指出输出的位置。
3.进行读/写操作。
4.关闭输入/输出。
字节流:
InputStream 类的常用子类如下。
ByteArrayInputStream 类:将字节数组转换为字节输入流,从中读取字节。
FileInputStream 类:从文件中读取数据。
PipedInputStream 类:连接到一个 PipedOutputStream(管道输出流)。
SequenceInputStream 类:将多个字节输入流串联成一个字节输入流。
ObjectInputStream 类:将对象反序列化。
字节输出流
OutputStream 类及其子类的对象表示一个字节输出流。OutputStream 类的常用子类如下。
1.ByteArrayOutputStream 类:向内存缓冲区的字节数组中写数据。
2.FileOutputStream 类:向文件中写数据。
3.PipedOutputStream 类:连接到一个 PipedlntputStream(管道输入流)。
4.ObjectOutputStream 类:将对象序列化。
组件和容器
组件(component)是图形界面的基本元素,用户可以直接操作,例如按钮。容器(Container)是图形界面的的复合元素,容器可以包含组件,例如面板。
Swing中预定义的窗口类JFrame是一种容器类,程序创建的JFrame或JFrame子类的对象就是窗口。
Container类中定义了add()方法,大多数容器都可以用add()方法向容器添加组件。
另外还有几个布局管理器:
FlowLayout:FlowLayout布局是将其中的组件按照加入的先后顺序从左到右排列,一行满之后就转到一下行继续从左到右排列,每一行中的组件都居中排列。
BorderLayout:BorderLayout布局策略是把容器内的空间简单划分为东“East”,西 “West”,南 “South”,北 “North”,中 “Center”五个区域。加入组件时,都应该指明把组件放在哪一个区域中。
GridLayout:GridLayout布局是把容器划分成若干行和列的网格状,行数和列数由程序控制,组件放在网格的小格子中。
CardLayout:采用CardLayout布局的容器虽可容纳多个组件,但是多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
绝对定位:通过设置绝对坐标的方式完成布局。
下面是我这一学期所写的实验总结报告:
第二周Java学习总结
第三周课程总结&实验报告一
第四周课程总结&试验报告(二)
第五周课程总结&试验报告(三)
第六周&java实验报告四
第七周课程总结&实验报告(五)
第八周课程总结&实验报告(六)
第九周课程总结&实验报告(七)
第十周课程总结
第十一周课程总结
第十二周总结
第十三周课程总结
第十四周课程总结&实验报告