课程总结
个人总结
马上大二上学期就快结束了,接下来就会是各种期末测试,还有专业课的考察,还记得大一时学的专业是c语言,但是在大一的课上,我并不是那种很认真听课的学生,一般是听一会儿课,玩一会儿手机,然后就导致我的专业课C语言成绩一落千仗,然后课后也不复习,整个大一就这样浑浑噩噩的过去了,我们大二上学期告别了C语言开始接触java,怎么说呢,c语言我学的是一塌糊涂,听到李津老师说的java基本和c语言大同小异,我的心瞬间哇凉,因为我的C语言基础底子不是很好,甚至可以说是一塌糊涂,但是李津老师还是对我们说不用太担心,只要这个学期好好听课,多去动手做题,是可以把差距缩小的,于是我试着去努力听课,认真完成老师布置的所有题目,并且认真阅读老师发给我们的资源,一开始我一窍不通,几乎每天都上网搜那些专业词,后来我开始觉得这些专业课并不那么枯燥,反而感觉有趣起来,在以前上课我听都听不懂老师所讲的一些专业词,到现在也变得耳熟能详起来,正所谓功夫不负有心人,我也可以慢慢的一步一步敲出正确的代码,而不是像以前一样毫无头绪,大二上学期马上就结束了,我怀着上学期的热情,开始期待下学期的学习任务了。
重要学习知识总结
方法的定义
public static 返回值类型 方法名称(...){
程序语句
[return 表达式]
}
方法覆写与重载的区别
覆写的单词为:Overriding,重载的单词是:Overloading;重载的方法名称相同,但参数的类型或个数不同,覆写的所有方法名称,参数类型,返回值类型全部相同;被覆写的方法不能拥有更严格的权限;重载是发生在一个类中,而覆写是发生在继承类中。
super关键词
super可以从子类中调用父类的构造方法、普通方法、属性。super与this一样,都是要放在构造方法首行。 super与this非常相似,但还是存在很大的区别 在访问方法和属性时,this是先访问本类,如果没有则去父类中继续查找,而super是直接访问父类;在调用构造方法是,this必须放在构造方法首行,而使用super必须放在子类构造方法首行。
final关键词
final是结束的意思,所有final就是说明此类不能被继承了就是没有子类了,在使用final声明变量时,要求全部字母大写!
抽象类:
抽象类的作用就是比普通类多了一些抽象方法:
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数){ //普通方法
[return 返回值];
}
访问权限 abstract 返回值类型 方法名称(参数); //抽象方法
instanceof关键词
在Java中可以使用instanceof关键词来判断一个对象到底是哪个类的实例,它返回boolean类型,如果一个程序要调用各个子类自己的方法,所以必须进行对象的向下转型,但是为了保证程序Zaibatsu运行时不出现类型转换异常,所以在发生向下转型之前要使用instanceof关键词判断是哪个子类的实例,以保证程序的运行正确。
throws与throw关键词
在定义一个方法时可以用throws关键词声明,使用throws声明的方法表示此方法不处理,而交给方法的调用进行处理
同步代码块synchronized关键字
synchronized(同步对象){ ///synchronized(this)this表示当前对象
需要同步的代码块;
}
多线程
Java中线程的实现包括①继承Thread类②实现Runnable接口 Thread是不共享变量的,Runnable是共享变量的
一个类只要继承了Thread类,此类就称为多线程操作类,所以在Thread子类中,必须明确地覆写Thread类中run()方法
线程启动:
Thread类
class My Thread extends Thread{ //继承Thread类
private String name; //在类中定义一个属性
public MyThread(String name){ //通过构造方法设置属性内容
this.name =name; //为name属性赋值
}public void run(){ //覆写Thread类中run()方法
for(int i=0;i<10;i++){ //循环输出10次
System.out.println(name +“运行,i=”+i);
}
}
};public class ThreadDemo{
public static void main(String args[]){
MyThread mt1 =new MyThread("线程A"); //实例化对象
MyThread mt2 =new MyThread("线程B"); //实例化对象
mt1.start(); //启动多线程
mt2.start(); //启动多线程
}
}
在线程启动时虽然调用的是start()方法,但实际上调用的确实run()方法的主体,那为什么在启动线程时,为什么必须通过start()方法启动,而不能直接调用run()方法呢
首先 start()方法在Thread类中定义
public synchronized void start(){
if (threadStatus !=0)
throw new IllegalThreadStateException();
...
start();
...
}private native void start0();
从中可以知道在一个类中的start()方法调用时矿难会抛出“IllegalThreadStateException”的异常,一般重复调用start()方法的时候会抛出这个异常,而实际上此处真正调用的是start()方法
如果一个类通过继承Thread类来实现,那么只能调用异常start()方法,如果调用多次,则会抛出“IllegalThreadStateException”异常
实现Runnable接口
class MyThread implements Runnable{ //实现Runnable接口
属性... ; //类中i定义属性
方法... ; //类中定义方法
public void run(){ //覆写Runnable接口中的run()方法
- 线程主体;
}
}
synchronized关键词 可以同步对象 ,但是在同步中如果条件矛盾会出现死锁
字节输入流inputStream
Public abstract class InputStreamextends ObjectImplements Closeable
字符输出流Writer
Public abstract class WriterExtends ObjectImplements Appendable,Closeable,Flushable
字符输入流Reader
Public abstract class ReaderExtends ObjectImplements Readable,Closeable
字符流与字节流的区别
字节流是直接操作文件本身的,如果没有关闭字节流操作,文件会依然输出内容
而字符流在程序运行之后会发现文件没有任何的内容,这是因为字符流操作的时候使用了缓冲区,而在关闭字符流的时候会强制性地将缓冲区中的内容进行输出,但是如果程序没有关闭,缓冲区的内容是无法输出的
转换流——OutputStreamWriter类与InputStreamReader类
OutputStreamWriter类:是Writer的子类,将输出的字符流变更为字节流
InputStreamReader类:是Reader的子类,将输出的字节流变更为字符流
内存操作流
字节内存流:ByteArrayInputStream(内存字节输入流)、ByteArrayOutPutStream(内存字节输出流)
字符内存流CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出流)
管道流
主要作用是可以进行两个线程间的通信,分为管道输出流(PipedOutputStream)、管道输入流(PipedInputStream),要进行管道输出,必须要把输出流连在输入流上,在PipedOutStream类上:
Public void connect (PipedInputStream snk)throws IOException
打印流
在整个IO包中,打印流是输出信息最方便的类,主要包含字节打印流(PrintStream)和字符打印流(PrintWriter)
打印流提供了非常方便的打印功能,可以打印任何的数据类型
打印流格式化:可以直接使用printf()方法就可以完成操作
System类对IO的支持
System类的常量
Java的图形界面:
一、AWT
1、AWT(Abstract Windowing Toolkit):抽象窗口工具包,是Java提供的用来建立和设置Java图形用户界面的基本工具。
AWT中的所有工具都保存在java.awt包中。
2、容器:所有的AWT组件都应该放在容器中,并可以设置其位置、大小等,所有的容器都是Component的子类。
3、组件:组件类都是从Component和MenuComponent拓展而来。
4、布局管理器:可以使容器中组件按照指定的位置进行摆放,另外一个的优点是:即使容器改变了大小,布局管理器也可以
准确地组件放到指定的位置。
二、Swing
1、Swing使用Java的语言实现,是以AWT平台为基础构建起来的新组件,直接使用Swing可以更加轻松的构建用户图形界面。
2、Java中Swing都是保存在java.swing包中。
3、Swing中所有的容器都是继承AWT组件包
标签组件:JLabel
JLabel组件表示的是一个标签,本身是用于显示信息的,创建完的Label对象可以通过Container类中的add方法加入到容器中
按钮组件:JButton
JButton组件是在窗体中添加一个按钮
4、布局管理器
1)FlowLayout(流式布局管理器)默认居中按照顺序依次排列
2)BorderLayout 将窗体依次分为东西南北中5个区域
3)GrideLayout 以表格形式进行管理,必须设置显示行数和列数(先满足行,再调列)
4)CardLayout 一组组件彼此重叠进行布局,每次只会显示一个界面
5)绝对布局 通过坐标指定组件放置的位置,窗体大小改变,组件位置也不会改变
JPanel
方法 | 类型 | 描述 |
---|---|---|
public JPanel | 构造 | 创建一个默认的JPanel对象,使用流布局管理 |
public JPanel(LayoutManager layout) | 构造 | 创建应该指定流布局管理的JPanel对象 |
JSplitPane
JSplitPane主要功能是分割面吧,可以将应该窗体分割为两个子窗体,可以是水平排列也可以是垂直排列
方法及常量 | 类型 | 描述 |
---|---|---|
public static final int HORIZONTAL_SPLIT | 常量 | 表示水平分割 |
public static final int VERTICAL_SPLIT | 常量 | 表示垂直分割 |
public JSplitPane(int newOrientation) | 构造 | 创建对象,并指明分割方式 |
public JSplitPane(int newOrientation,boolean newContinuousLayout,Compoment NewLeftComponent,Compoment NewRightComponent) | 构造 | 创建对象、指明分割方式、分割条改变是否重绘图形以及两端的显示组件 |
public void setDividerLocation(double proportionalLocation) | 普通 | 设置分割条的位置,按百分比 |
public void setOneTouchExpandable(boolean NewValue) | 普通 | 设置是否提供快速展开/折叠的功能 |
public void setDividerSize(int newSize) | 普通 | 设置分割条大小 |
JTabbedPane
方法及常量 | 类型 | 描述 |
---|---|---|
static final int TOP | 常量 | 表示指向框顶部位置 |
static final int BOTTOM | 常量 | 表示指向框底部位置 |
static final int LEFT | 常量 | 表示指向框左部位置 |
static final int RIGHT | 常量 | 表示指向框右部位置 |
public JTabbedPane(int tabPlacement) | 构造 | 创建对象,并指定选项卡布局 |
public void addTab(String title,Component component) | 普通 | 添加一个有标题,而没有图标的组件 |
public void addTab(String title,Icon icon,Component component) | 普通 | 添加一个有标题,有图标的组件 |
public void addTab(String title,Icon icon,Component component,String tip) | 普通 | 添加一个有标题,有图标,有提示信息的组件 |
JScrollPane
JScrollPane 面板是带滚动条的面板,它也是一种容器,但是 JScrollPane 只能放置一个组件,并不可以使用布局管理器。如果需要在 JScrollPane 面板上放置多个组件,需要将多个组件放置在 JPanel 上,然后将 JPanel 面板作为一个整体组件添加在 JScrollPane 组件上。
JDesktopPane:
方法及常量 | 类型 | 描述 |
---|---|---|
public JDesktopPane() | 构造 | 创建一个JDesktopPane()对象 |
public void setSelectedFrame(JInternalFrame f) | 普通 | 设置此JDesktopPane中当前活动的JInternalFrame |
JInternalFrame:
方法及常量 | 类型 | 描述 |
---|---|---|
public JInternalFrame(String title) | 构造 | 创建不可以调整大小的、不可关闭的、不可最大化的、不可图标化的、具有指定标题的JInternalFrame |
public JInternalFrame(String title,boolean resizable | 构造 | 创建不可关闭的、不可最大化的、不可图标化的、以及具有指定标题和可以调整大小的JInternalFrame |
public JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable | 构造 | 创建可调整、可关闭、可最大化、可图标化的JInternalFrame |
事件和监听器
在Swing编程中,所有事件类都是EventObject的子类
public class EventObject extends Object implements Serializable{
public EventObject(Object source){ //构造一个发生事件的对象
{
public Object getSource(){ //返回一个事件对象
}
public String toString(){ //得到信息
}
}
窗体事件
WindowListener是专门处理窗体事件的监听接口
方法及常量 | 类型 | 描述 |
---|---|---|
void windowActivated(WindowEvent e) | 普通 | 将窗口变为活动窗口时触发 |
void windowDeactivated(WindowEvent e) | 普通 | 将窗口变为不活动窗口时触发 |
void windowClosing(WindowEvent e) | 普通 | 将窗口政治关闭时触发 |
void windowClosed(WindowEvent e) | 普通 | 将窗口关闭时触发 |
void windowIconified(WindowEvent e) | 普通 | 窗口最小化时触发 |
void windowDeiconified(WindowEvent e) | 普通 | 窗口最小化恢复正常时触发 |
void windowOpened(WindowEvent e) | 普通 | 窗口打开时触发 |
ActionListener接口方法
方法及常量 | 类型 | 描述 |
---|---|---|
void actionPerformed(ActionEvent e) | 普通 | 发生操作时调用 |
KeyListener接口方法:
方法 | 类型 | 描述 |
---|---|---|
void keyTyped(KeyEvent e) | 普通 | 键入某个键时调用 |
void keyPressed(KeyEvent e) | 普通 | 键盘按下时调用 |
void keyReleased(KeyEvent e) | 普通 | 键盘松开时调用 |
KeyEvent事件的常用方法:
方法 | 类型 | 描述 |
---|---|---|
public char getKeyChar() | 普通 | 返回键入的字符,只针对keyTyped有意义 |
puclic int getKeyCode() | 普通 | 返回键入字符的键码 |
public static String getKeyText(int keyCode) | 普通 | 返回此键的信息,如"HOME"、"F1"或"A"等 |
MouseListener接口方法:
方法 | 类型 | 描述 |
---|---|---|
void mouseClicked(MouseEvent e) | 普通 | 鼠标单击时调用(按下并释放) |
void mousePressed(MouseEvent e) | 普通 | 鼠标按下时调用 |
void mouseReleased(MouseEvent e) | 普通 | 鼠标松开时调用 |
void mouseEntered(MouseEvent e) | 普通 | 鼠标进入到组件时调用 |
void mouseExited(MouseEvent e) | 普通 | 鼠标离开组件时调用 |
MouseEvent事件的常用方法
方法及常量 | 类型 | 描述 |
---|---|---|
public static final int BUTTON1 | 常量 | 表示鼠标左键的常量 |
public static final int BUTTON2 | 常量 | 表示鼠标滚轴的常量 |
public static final int BUTTON3 | 常量 | 表示鼠标右键的常量 |
public int getButton() | 普通 | 以数字形式返回按下的鼠标键 |
public int getClickCount() | 普通 | 返回鼠标的单机次数 |
public static String getMouseModifiersText(int modifiers) | 普通 | 以字符串形式返回鼠标按下的键信息 |
public int getX() | 普通 | 返回鼠标操作的X坐标 |
public int getY() | 普通 | 返回鼠标操作的Y坐标 |
鼠标拖拽事件几起监听处理
方法 | 类型 | 描述 |
---|---|---|
void mouseDragged(MouseEVent e) | 普通 | 在组件上按下并拖动时调用 |
void mouseMoved(MouseEvent e) | 普通 | 鼠标移动到组件时调用 |
JRadioButton
单选钮就是在给出多个显示信息中指定选择一个,在Swing中可以使用JRadioButton完成一组单选钮的操作
方法 | 类型 | 描述 |
---|---|---|
public JRadioButton(Icon icon) | 构造 | 建立一个单选钮,并指定图片 |
public JRadioButton(Icon icon,boolean selected) | 构造 | 建立一个单选钮,并指定图片和其是否选定 |
public JRadioButton(String text) | 构造 | 建立一个单选钮,并指定其文字,默认为不选定 |
public JRadioButton(String text,boolean selected) | 构造 | 建立一个单选钮,并指定稳住和其是否选定 |
public JRadioButton(String text,Icon icon,boolean selected) | 构造 | 建立一个单选钮,并指定图片、文字、和其是否选定 |
public void setSelected(boolean b) | 普通 | 设置是否被选中 |
public boolean isSelected() | 普通 | 返回是否被选中 |
public void setText(String text) | 普通 | 设置显示文本 |
public void setIcon(Icon defaultIcon) | 普通 | 设置图片 |
JDBC
JDBC,提供了一种与平台无关的用于执行SQL语句的标准Java API,可以方便地实现多种关系型数据库统一操作,它由用java一组语言编写的类和接口组成
1.加载驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver"; //MySQL中的数据库驱动程序路径
Class.forName(DBDRIVER); //利用class类加载驱动程序,需要处理异常
2.连接数据库
........接上
Connection conn = null;
conn = DriverManager.getConnetion(连接地址,用户名,密码);//需处理异常
3.执行数据库
需要使用Statement 接口完成
所有总结:
<a href ="https://www.cnblogs.com/edg4396/p/11477374.html">第二周学习总结 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11516807.html">第三周课程总结&实验报告一 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11550852.html">第四周课程总结&实验报告(二)</a>
<a href ="https://www.cnblogs.com/edg4396/p/11595175.html">第五周课程总结&试验报告(三) </a>
<a href ="https://www.cnblogs.com/edg4396/p/11631531.html">第六周学习总结&java实验报告四 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11650530.html">第七周课程总结&实验报告(五) </a>
<a href ="https://www.cnblogs.com/edg4396/p/11697529.html">第八周课程总结&实验报告(六) </a>
<a href ="https://www.cnblogs.com/edg4396/p/11734008.html">第九周课程总结&实验报告(七)</a>
<a href ="https://www.cnblogs.com/edg4396/p/11777131.html">第十周课程总结 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11822121.html">第十一周课程总结 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11870058.html">第十二周学习总结 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11919294.html">第十三周课程总结 </a>
<a href ="https://www.cnblogs.com/edg4396/p/11957309.html">第十四周课程总结&实验报告(简单记事本的实现) </a>