不知不觉,就到了学期的期末了,Java的学习也要告一段落了,但是Java的学习却不会结束,Java的知识还有很多需要我们去学习,因为我们现在学习的还是很浅薄简单的Java知识,这个学期我们学了挺多的东西,其实给人的感觉就是学的很杂,但是主要学习了搭建了Java的编译环境,安装eclipse软件,会用Java写一些简单的程序。主要的知识点有this,static,封装继承,异常的捕获与处理,包还有多线程,图形界面
this
属性访问:访问本类中的属性,如果本类没有此属性则从父类中继续查找。
方法:访问本类中的方法,如果本类没有此方法则从父类中继续查找。
调用构造:调用本类构造,必须放在构造方法的首行。
特殊:表示当前对象。
static
如果在程序中使用static声明属性的话,则此属性属于全局属性;static声明的属性是所有对象共享的,在访问static属性时最好可以由类名称直接调用。
static既可以在声明属性的时候使用,也可以用其来声明方法,用它声明的方法有时也被称为类方法,可以由类名称直接调用。
非static声明的方法可以去调用static声明的属性或方法的。但是static声明的方法是不能调用非static类型声明的属性或方法的
对于main()方法也进行了一些学习,知道了main()方法每个参数的含义。学会另一种循环方法去遍历数组,如下:
for(String e:args){
System.out.println(e);
}
学习了两种为String赋值的方法;
1)
String str="zuoshuai";
String str=new String("zuoshuai");
String里的“==”是进行地址之间的比较,而不能直接比较内容,如果要比较内容需要需要使用到方法。public boolean equals(String str);
String一旦定义了,他的内容不可改变。
有关String里的一些方法。
对象的多态性
1)向上转型:子类对象→父类对象(自动转换)
2)向下转型:父类对象→子类对象(强制转换)
继承:一个子类只能继承一个父类,不允许多重继承,但接口可以多重实现。
强制转换时,先转换成父类,再强制转换。
子类不能直接访问父类的私有操作,可以通过getter和setter间接访问父类的私有操作。
使用final定义类时,不能被继承,即使用final声明的类不能有有子类;不能被子类覆写;用final声明的变量即常量,常量不可修改。
Interface关键字:接口,接口里只可以有全局常量(每个字母需要大写)和抽象方法
Implements关键字:实现接口。
异常
异常是导致程序中断的一种指令流。
异常处理格式
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);
}
多线程
Java中多线程的实现主要是通过继承Thread类或实现Runnable接口。其中Runnable接口可以资源共享。但不管使用哪种方法都要通过覆写run();在实例化的时候通过调用start()方法来启动多线程。
还学习了一些实现多线程的相关方法,例如:
Thread.getName();
Thread.currentThread();
isAlive(); 判断线程是否启动
join(); 线程的强制运行
Thread.sleep(); 线程的休眠
interrupt(); 中断线程
图形界面
主要是基于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可实现简单的菜单外观,使用事件监听可对应作出一些功能的实现,如代码记事本
还有其他的更多知识我就不一一说了,反正冲冲冲就对了。