课程总结
什么煽情的话多少是多余的,唯还是要继续努力!
这学期渐渐已经要接近尾声,对于JAVA的学习也慢慢有了进步。
从最开始的创建类,写方法,再到从以前的C语言转换为Java,最深刻的便是以前输入的时候,还一直不能明白。
关于这学期所学到的java知识点,我也做了一个归纳:
1.了解了什么是类,类与对象的关系。类就是定义一个基本的模板,代表着一个共性,是表示一个客观世界某类群体的一些基本体征的抽象;而对象表示每一个具体的东西;
2.了解了Java面向对象的第一大特性封装性,private
3.this:表示当前对象
属性访问:访问本类中的属性,如果本类没有此属性则从父类中继续查找。
方法:访问本类中的方法,如果本类没有此方法则从父类中继续查找。
调用本类构造,必须放在构造方法的首行,不能放在main方法中。
- 覆写:就是指子类中定义了与父类中同名的方法,但是要考虑权限,被子类覆写的方法不能拥有比父类方法更严格的访问权限,例如:父类(private)<=子类(private||public)。
- 重载:同一个类中相同名称不同参数的方法。
final关键字(表示的意思是最终的意思,也可以称为完结器)
1)使用final声明的类不能有子类
2)使用final声明的方法不能被子类所覆写
3)使用final声明的变量级成为常量,常量不可以修改
-
异常
- 异常是导致程序中断的一种指令流。
- 异常处理格式
try{
//有可能出现异常的语句
}catch(异常类 异常对象){
//编写异常处理的语句
}[catch(异常类 异常对象){
//编写异常处理的语句
}catch(异常类 异常对象){
//编写异常处理的语句
}...]
[finally{
一定会运行处理到的程序代码;
}]
异常类的继承结构
一般最常用的两个类:Exception、Error。
Exception:一般表示的是程序中出现的问题,可以直接使用try...catch处理
Error:一般指的是JVM错误,程序中无法处理
异常类
throws和throw
throws
使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理,格式如下:
public 返回值类型 方法名称(参数列表...)throws 异常类{}
throw
与throws关键字不同的是,可以直接使用throw关键字抛出一个异常,抛出时直接抛出异常类的实例化对象即可。
try{
throw new Exception("自己抛出的异常!");
}catch(Exception e){
System.out.println(e);
}
多线程
多线程的实现有两种方法继承Thread类和使用Runnable接口
Thread类不共享,Runnable接口共享。
Thread类
格式:
class 类名称 extends Thread{
属性...;
方法...;
public void run(){
线程主体;
}
}
想要实现多线程不是调用run()方法,而是start()方法。
多线程
Java中多线程的实现主要是通过继承Thread类或实现Runnable接口。其中Runnable接口可以资源共享。但不管使用哪种方法都要通过覆写run();在实例化的时候通过调用start()方法来启动多线程。
还学习了一些实现多线程的相关方法,例如:
Thread.getName();
Thread.currentThread();
isAlive(); 判断线程是否启动
join(); 线程的强制运行
Thread.sleep(); 线程的休眠
interrupt(); 中断线程
等等。。。
还有哪个线程的优先级高,哪个线程有可能优先被执行。
字节流和字符流的基本操作
1)字节输出流:outputStream
常用方法:close()关闭输出流
flush()刷新缓冲区
write()写入数据流(但只能以字节写入)
以上方法如果重新执行会覆盖文件中的已有内容,想要追加新内容通过FileOutputStream类的另一种构造方法进行实例化,如下:
File f=new File(路径);
OutputStream os=new FileOutpuStream(f,true);
2)字节输入流:InputStream
常用方法:available() 取得输入文件的大小
close()关闭输入流
read()读取内容
3)字符输出流:Writer
常用方法:close()关闭输出流
write()输出字符串或字符数组
flush()强制清空缓存
追加文件使用FileWriter类,同字节输出流
4)字符输入流:Reader
常用方法:close()关闭
read()读取字符到数组
字节流和字符流区别在于字节流直接对文件进行操作,而字符流是将数据先放在缓存之后,在写入文件的
转换流OutputStreamWriter类与IntputStreamReader类
OutputStreamWriter类是Writer的子类将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流的输出对象。如下
Writer w=new OutputStreamWriter(new FileOutputStream(f));
IntputStreamReader类是Reader的子类将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象
Reader r=new InputStreamReader(new FileInputStream(f));
内存操作流程
字节内存流:ByteArrayInputStream(内存字节输入流);ByteArrayOutputStream(内存字节输出流)
字符内存流:CharArrayReader(内存字节输入流);CharArrayWriter(内存字节输出流)
首先是要声明内存的输入输出流,再去进行操作。
管道流
主要作用是可以进行两个线程间的通信
管道输出流:PipedOutputSream;管道输入流:PipedInputStream
用connect()方法来连接输出和输入流
打印流PrintStream
打印流进行格式化和C语言差不多
System类
1)System.out 向显示器上输出,是PrintStream的对象,PrintStream是OutputStream的字类,所以可以使用OutputStream向屏幕输出
2)Syatem.err 错误信息输出
3)System.in 键盘的输入流,是InputStream的对象
图形界面
主要是基于AWT和Swing包来实现的
AWT(抽象窗口工具包)
主要包括以下三种工具类
1)组件:Component
2)容器:Container
3)布局管理器:LayoutManager
Swing (保存在Javax.swing中)
基本容器JFrame
常用操作方法:
创建一个窗体:JFrame f = new JFrame;
设置窗体大小:f.setSize(int width , int height);
设置窗体背景颜色:f.setBackground(Color.颜色);
设置窗体显示位置:f.setLocation(int x, int y);
显示窗体:f.setVisible(true);
注意:可以用Dimension类封装组件的宽高(用于批量修改时比较方便)
也可以用Point类来封装显示位置(除此之外还可以移动组件位置通过坐标,使用move(int x, int y)方法,使用translate(int dx, int dy)方法可以平移组件);
标签组件JLabel
可以通过创建完的JLabel对象通过Container类中的add()方法加入到容器中 如下:
Container cont = frame.getContentPane();
cont.add(label);
更改JLabel的文字样式,使用到Font类
public void setFont(Font f);
在JLabel中设置图片,使用Imagelcon类
Icon icon = new Imagelcon(路径);
JLabel label = new JLabel(icon,JLabel.CENTER) //实例化对象,使用居中对齐
f.add(label);
按钮组件JButton
建立一个按钮即new JButton()即可
在按钮上显示一个图片:
Icon icon = new Imagelcon(路径);
JButton button = new JButton(icon) //实例化
f.add(buttton);
布局管理器
1)FlowLayout(流式布局管理器)默认居中按照顺序依次排列
2)BorderLayout 将窗体依次分为东西南北中5个区域
3)GrideLayout 以表格形式进行管理,必须设置显示行数和列数(先满足行,再调列)
4)CardLayout 一组组件彼此重叠进行布局,每次只会显示一个界面
5)绝对布局 通过坐标指定组件放置的位置,窗体大小改变,组件位置也不会改变
public void setBounds(int x,int y,int width,int height);
JPane容器使用流失布局管理
frame pack()方法可以根据组件自动调整窗体大小
主要学习监听器及各种事件处理
1)键盘监听
使用KeyListener接口
2)鼠标监听
使用MouseListener接口,其中MouseEvent中有getButton(),getX(),getY()等方法
3)单选钮:JRadioButton及事件处理
方法:
setSelected();是否被选中
setText(String);设置显示文本
setIcon(Icon);设置图片
其事件处理使用ItenListener
4)复选框:JCheckBoxji事件处理
方法:
JCheckBox();创建文本对象
其事件处理也是用ItemListener接口
5)列表框:JList及事件处理
方法:
int[] getSeletrdIndices();返回所选择的所有数组
Jlist(ListModel/Object[] listData/Vector<?>listData);构造JList
其事件处理使用ListSelectionListener接口
菜单组件
JMenu、JMenuBar、JMenuItem可实现简单的菜单外观,使用事件监听可对应作出一些功能的实现,如代码记事本