课程总结
个人总结
马上大二上学期就快结束了,接下来就会是各种期末测试,还有专业课的考察,还记得大一时学的专业是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> 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号