学期总结
Posted xzhxzh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学期总结相关的知识,希望对你有一定的参考价值。
这一年过的很快,通过这一年Java的学习对自己的提升很大,Java这个课程主要是对面向对象的学习,而且是需要一些C语言的知识来学习的,Java开始也是很容易,但是越到后面越加的难了,通过对各种方法以及关键词的学习,让我更加的了解到这门课程的思想,使我学习起来变得不那么困难,Java上课讲的知识也非常的重要,老师也通过自己的演示来更好的让我们理解上课的内容,这种方法非常的好!这一年的学习就这样结束了,也希望在接下来的学习中,可以更加的努力!
this
属性访问:访问本类中的属性,如果本类没有此属性则从父类中继续查找。
方法:访问本类中的方法,如果本类没有此方法则从父类中继续查找。
调用构造:调用本类构造,必须放在构造方法的首行。
特殊:表示当前对象。
static
如果在程序中使用static声明属性的话,则此属性属于全局属性;static声明的属性是所有对象共享的,在访问static属性时最好可以由类名称直接调用。
static既可以在声明属性的时候使用,也可以用其来声明方法,用它声明的方法有时也被称为类方法,可以由类名称直接调用。
非static声明的方法可以去调用static声明的属性或方法的。但是static声明的方法是不能调用非static类型声明的属性或方法的
对于main()方法也进行了一些学习,知道了main()方法每个参数的含义。学会另一种循环方法去遍历数组,如下:
for(String e:args){
System.out.println(e);
}
学习了两种为String赋值的方法;
1)
String str="Alice";
2)
String str=new String("Alice");
String里的“==”是进行地址之间的比较,而不能直接比较内容,如果要比较内容需要需要使用到方法。public boolean equals(String str);
String一旦定义了,他的内容不可改变。
有关String里的一些方法。
还有学习了对象数组
类 对象数组名称[]=new 类[数组长度]
数据类型 数组名称[]=null;
数组名称=new 数据类型[长度];
包的基本概念,用法
包的定义:package 包名称.子包名称;
编译的时候要如下
javac -d . 名称.java
类的导入主要用 import.
import 包名称.子包名称.类名称;或
import 包名称.子包名称.*; //自动加载所需类
还了解Java的常用系统包。
学习了Java的另一特性继承性。
1)继承格式
class 父类{}
class 子类 extends{}
2)可以通过子类扩展父类
3)只允许多层继承,不允许多重继承。
4)子类不能直接访问父类中的私有操作,但可以通过get方法访问。
5)子类构造方法中的super()。一般写类的时候要构造一个空方法,因为一般子类对象实例化之前会先默认调用父类中的构造方法,如果父类中没有构造方法,就会默认调用一个空的构造方法。 super()就是调用父类构造方法的语句。
方法的覆写和重载
覆写:就是指子类中定义了与父类中同名的方法,但是要考虑权限,被子类覆写的方法不能拥有比父类方法更严格的访问权限,例如:父类(private)<=子类(private||public)。
重载:同一个类中相同名称不同参数的方法。
final关键字(表示的意思是最终的意思,也可以称为完结器)
1)使用final声明的类不能有子类
2)使用final声明的方法不能被子类所覆写
3)使用final声明的变量级成为常量,常量不可以修改
抽象类
1)包含一个抽象方法的类必须是抽象类。抽象方法如下:
访问权限 abstract 返回值类型 方法名称(参数);
2)抽象类和抽象方法都要使用abstract关键字声明
3)抽象方法只需声明而不需要实现
4)抽象类必须被子类继承,子类(如果不是抽象类)必须填写抽象类中的全部抽象方法
对象的多态性
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);
}
多线程
多线程的实现有两种方法继承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(); 中断线程
等等。。。
还有哪个线程的优先级高,哪个线程有可能优先被执行。
同步
同步代码块
synchronized(同步对象){ ///synchronized(this)this表示当前对象
需要同步的代码块;
}
同步方法
synchronized 方法返回值 方法名称(参数列表){
方法体
}
使用File类进行文件的操作
以下是针对文件本身操作的
createNewFile(); 创建新文件
delete(); 删除一个指定文件
mkdir(); 创建一个文件夹
public String[]list(); 列出全部名称,返回一个字符串数组
public File[]listFiles(); 列完整的路径,返回一个File对象数组
isDirectory(); 判断一个给定的路径是否是目录
RandomAccessFile类可以对文件内容进行操作
字节流和字符流的基本操作
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可实现简单的菜单外观,使用事件监听可对应作出一些功能的实现,如代码记事本
1.对于jdbc的一个了解
主要常用操作类与接口:
java.sql.DriverManager 用于管理jdbc驱动程序
Java.sql.Connection 用于建立与特定数据库的连接
Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果
Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口
Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问
2.mysql的安装与配置
3.MySQL的常用命令
1)mysql -u用户名 -p密码 连接mysql数据库
2)创建数据库:CREATE DATABASE 数据库名称;
3)删除数据库:DROP DATABASE 数据库名称;
4)USE 数据库名称; 使用数据库
5)创建数据库表
CREATE TABLE 表名称(
字段名称1 字段类型 [DEFAULT 默认值][约束],
字段名称2 字段类型 [DEFAULT 默认值][约束],
...,
字段名称n 字段类型 [DEFAULT 默认值][约束]
);
6)删除数据库表 DROP TABLE 表名称;
7)查看表结构 DESE 表名称;
8)查看数据库信息
查看全部数据库:SHOW DATABASES;
查看一个数据库的全部表:SHOW TABLES;
4.配置mysql数据库的驱动程序
package textshujuku;
public class Text {
public static final String DBDRIVER="ora.gjt.mm.mysql.Driver";
public static void main(String[] args) {
try {
Class.forName(DBDRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
以上是关于学期总结的主要内容,如果未能解决你的问题,请参考以下文章