zoukankan      html  css  js  c++  java
  • 课程总结

    基础

    1.构造方法的声明有三个重点,(1)名称必须与类名称一致;(2)声明处不能有任何返回值类型声明;(3)不能在构造方法中使用return返回一个值。(一个类中至少有一个构造方法)
    2.this关键字(不能在main()方法中使用)的三个作用,(1)表示类中的属性;(2)用this调用本类的构造方法(必须放在首行);(3)this表示当前对象。
    3.static关键字简单来说,有static这个词,则具有一种公共属性,另外非static声明的方法可以调用static声明的属性或方法,但是static声明的方法不能调用非static类型声明的属性或方法。

    数组

    定义
    初始化
    元素表示方式

    作用、定义、类的导入

    String类

    两种实例化方式:1.直接赋值;2.new。
    两种实例化区别:1方法只会开辟一块堆内存空间,且会自动保存在对象池中以供下次重复使用;2方法会开辟两块堆内存空间,其中一块会成为垃圾空间。
    两种比较方式:1.“==”比的是地址值;2.equals()方法比的是内容。
    字符串的内容不可改变,如果同一个字符变量的内容改变了,则说明该变量指向了存储更改后的内容的空间(更改后的内容存在了一个新的空间处)的地址。
    String类常用方法。

    继承

    概念
    类的继承方式:class 父类{}
    class 子类 extends 父类{}
    继承的实现:通过继承的功能可以直接把父类中的操作直接拿到子类中使用,子类也可以定义自己的属性或方法。
    注意:只可多层继承,不可多重继承;子类不能直接访问父类中的私有成员,可以调用父类中的非私有方法,但不能直接调用父类中的私有成员。
    方法覆写:指子类定义了与父类中同名的方法。

    覆写与重载的区别
    重载 覆写
    方法名称同,参数类型或个数不同 方法名称、参数类型、返回值类型全部相同
    对权限无要求 被覆写的方法不能有更严格的权限
    发生在同一个类中 发生在继承类中

    super()可以从子类中调用父类中的构造方法、普通方法、属性。
    super(不能在main()方法中使用)调用父类的构造方法:语句必须放在子类构造方法的首行,父类没有构造方法时,会在父类中自动生成一个空的构造方法,然后通过在子类中用super();调用,若父类中构造了非空的构造方法,则不会再自动生成空构造方法,此时子类中调用父类的构造方法super();括号中要带参数。

    this与super的区别
    区别点 this super
    属性访问 访问本类中的属性,如果本类没有此属性则从父类中查找 访问父类中的属性
    方法 访问本类中的方法,如果本类没有此方法则从父类中查找(就近) 直接访问父类中的方法
    调用构造 调用本类构造,必须放在构造方法的首行 调用父类构造,必须放在子类构造方法的首行
    特殊 表示当前对象 无此概念
    抽象类

    定义及使用:
    (1)包含一个抽象方法的类必须是抽象类;
    (2)抽象类和抽象方法都要用abstract声明;
    (3)抽象方法只需声明而不需实现;
    (4)抽象类必须被子类继承,如果子类不是抽象类,必须覆写抽象类的全部抽象方法。

    final关键字

    声明时注意:
    (1)final声明的类不能有子类;
    (2)final声明的方法不能被子类覆写;
    (3)final声明的变量会成为常量。

    对象的多态性

    (1)子类对象->父类对象 (向上转型)
    (2)父类对象->子类对象 (向下转型)
    注:向上转型是自动的,向下转型是强制的,必须明确指明要转型的子类的类型,(为保证转型成功)向下转型之前必须先有对象向上转型。
    格式:
    向上 父类 父类对象 = 子类实例;
    向下 子类 子类对象 = (子类)父类实例;

    instanceof关键字

    作用:在发生向下转型之前用于判断一个对象到底是哪个类的实例;
    格式:对象 instanceof 类 --> 返回值是boolean型;

    接口

    定义格式:
    interface 接口内容{
    全局常量;
    抽象方法;
    }

    实现接口的格式:
    class 子类 implements 接口 A,接口 B,...{
    }
    一个子类既实现接口又继承抽象类 格式:
    class 子类 extends 抽象类 implements 接口 A,接口 B,...{
    }
    抽象类实现接口格式:
    abstract class 类名 implements 接口 A{
    }

    接口的继承 格式:
    interface 子接口 extends 父接口 A,父接口 B,...{
    }

    注意:

    (1)接口中的抽象方法必须是public的访问权限,不可改变,就算没写public,也是;
    (2)要使用接口必须通过子类,子类通过implements关键字实现接口;
    (3)一个子类可以同时实现多个接口;
    (4)一个接口是不允许继承抽象类的,但一个接口允许继承多个接口。

    抽象类与接口的应用

    1.抽象类是在对象们有共同特性,也有不同时使用;共同属性在抽象类中赋值,不同点则创建抽象方法,在子类继承之后具体实现。
    接口更多用于制定标准;接口中只有抽象方法,由子类实现接口之后具体实现,还要创建一个作用类似于“中转站”的类,在其中用前面创建的接口的类型的变量来应用具体的方法。
    2.抽象类和接口都可以使用的话,优先使用接口,接口没有单继承的局限;

    Object类

    Object类主要讲了两个方法
    toString():输出对象时调用该方法打印内容。
    equals():Object类中的equals()方法默认是比较地址,返回值时boolean型,要比较内容的话,要在子类覆写。
    String类的equals()方法是比较内容的,Object类的equals方法的本质和“==”一样,都是比较两个对象引用是否指向同一个对象(即两个对象是否为同一对象)。String类继承Object类后,也继承了equals方法,但String类对equals方法进行了重写,改变了equals方法的比较形式。

    异常的捕获及处理

    异常的概念:是导致程序中断运行的一种指令流。
    异常处理格式:

    try{
    //可能出现异常的语句
    }catch(异常类 异常对象){
    //编写异常的处理语句
    }...//catch()可以有多个
    finally{
    //一定会运行到的程序代码
    }
    

    最常用的异常类有:Exception、Error,都是Throwable的子类;Exception一般表示程序中出现的问题,可以直接使用 try...catch()处理;Error一般指JVM错误,程序无法处理。
    程序中直接使用Exception进行其他异常捕获。
    在java中所以捕获范围小的异常必须放在捕获范围大的异常前面,否则编译时会出现错误提示。

    throws关键字

    定义方法时使用throws声明,表示此方法不处理异常,而交给方法调用处进行处理;
    在主方法处使用throws,只能将异常抛给JVM进行处理。

    throw关键字

    使用throw可以直接抛出一个异常,即抛出异常类的实例化对象。
    大多时候用户自定义异常类型都要用throw来抛出。
    Exception类与RuntimeExceptuion类
    Exception在程序中必须用try-catch结构处理,RuntimeExceptuion可以不使用(最好还是用一下)try-catch结构处理,如果有异常产生,则由JVM处理。

    线程的实现

    一个类只要继承了Thread类就被称为多线程操作类,该类必须明确覆写Thread类的run()方法,这个方法是线程的主体。
    多线程定义:

    class  类名称 extendsThread{
            属性...;
            方法...;
            public void run(){
                线程主体;
        }
    }
    
    注意:

    Thread类中已有setName()和getName()得到线程的名称,且不能覆写。
    正确启动多线程要调用从Thread类中继承来的start()方法,不能直接调用run()方法。
    Runnable接口和Thread类的区别:继承Thread类不能共享资源,实现Runnable接口可以共享资源。
    线程的一些主要方法;
    取得和设置线程的名称:取得名称用Thread.currentThread().getName(),手工设置线程名称是在启动线程时new Thread(对象名称,"线程名称").start();
    中断线程:在一个线程运行时,另一个线程可以直接通过interrupt()方法中断其运行状态;
    同步:在多个线程操作同一资源时,有可能出现资源的同步问题,使用“同步代码块”或“同步方法”来避免;
    同步代码块:

    synchronized(同步对象){
           //需要同步的代码
    }
    

    同步方法:

    synchronized 方法返回值 方法名称(参数列表){
       //方法体
    }
    
    File类

    File类的构造方法:
    public File(String pathname); 实例化File类的时候,必须设置好路径
    File类的主要操作方法:
    File类的常量:pathSeparator表示; separator表示
    RandomAccessFile类的常用操作方法;

    注意:

    1.主方法实际上也是一个线程;
    2.在java运行时至少会启动两个线程:一个是main线程,另一个是垃圾收集线程;
    3.在调用yield()方法做线程礼让时,会将当前线程暂停一下,让其它线程进行,但是是否会礼让成功,由CPU决定。

    字节流与字符流基本操作

    字节流中输出主要用OutputStream类(通过子类实例化),输入主要用InputStream类(通过子类实例化);
    字符流中输出主要用Writer类(通过子类实例化),输入主要用Reader类(通过子类实例化);
    如果要操作一个文件:
    字节流可以使用FileOutputStream类和FileInputStream类(各自有相应的操作方法);
    字符流可以用FileWriter类(是OutputStreamWriter的子类)和FileReader类(是InputStreamReader的子类)(各自有相应的操作方法);

    字节流与字符流的区别

    字节流在操作时不会用到缓存区,是基于文件本身直接操作(这种方式适用范围更广),而字符流在操作时使用到缓存区,通过缓存区再操作文件(这种方式效率更高),但是如果程序没有关闭,缓存区的内容也无法输出。
    想在不关闭的时候也可以将字符流的内容输出,则可以使用Writer类中的flush()方法完成。

    转换流

    OutputStreamWriter:是Writer的子类,将一个字符流的输出对象变为字节流的输出对象。
    InputStreamReader:是Reader的子类,将一个字节流的输入对象变为字符流的输入对象。
    不管是用字节流还是字符流最终都是以字节的形式操作输入/输出流的。

    管道流

    要想进行管道输出,则必须把输出流连在输入流上。连接管道有:

    public void connect(PipedInputStream snk) throws IOException
    
    System类对IO的支持

    PrintStream是OutputStream的子类
    System类中的三个常量:out(系统标准输出,一般是显示器),err(错误信息输出),in(标准输入,一般是键盘)。
    System.out是PrintStream的对象,在PrintStream中定义了一系列的print()和println()方法。
    System.err是错误信息的输出。
    System.in是一个键盘的输入流。

    注意:

    此处所有的输入输出都以程序为参照;
    操作时要对异常进行处理。

    AWT

    包括组件(Component)、容器(Container)、布局管理器(LayoutManager)3种工具类。

    Swing

    以AWT平台为基础构建成的新组件。
    用JFrame类的方法创建一个窗口;
    一个JFrame就表示一个容器,在容器上可以安装多个组件。
    标签组件JLabel表示一个标签,用于显示信息(可以设置文字显示效果或显示图片),一般不能直接更改其显示内容;
    创建完的Label对象可以通过Container类中的add()方法加入到容器中。
    组件JButton表示一个按钮,使用此类可以直接在窗体增加一个按钮。
    FlowLayout流式布局管理器,所有组件会依次进行排列,用FlowLayout类的常用方法及常量对窗体布局进行设置。
    BorderLayout布局管理器是将一个窗体面板划分为东、西、南、北、中5个区域进行设置。
    GridLayout布局管理器以表格的形式进行管理,使用时必须设置显示的行数和列数(行优先,满足行数要求后,再排列数)。
    CardLayout布局管理器是将一组组件彼此重叠地进行布局,每次只会展现一个界面。
    绝对定位是通过设置组件的绝对坐标来完成布局,通过setBounds()方法设置坐标。

    public void setBounds(int x,int y,int width,int height)
    

    使用绝对定位不管窗体如何改变大小,组件的位置是固定不变的。

    JPanel

    常用容器之一,在JPanel中可以加入任意组件,然后将JPanel容器加到JFrame容器中即可,有两个方法。

    JSplitPane

    分割面板,讲一个窗体分为两个子窗体,可以水平或垂直排列。

    JTabbedPane

    可以在一个面板上设置多个选项卡。

    JScrollPane

    主要是为显示的内容加入水平或垂直的滚动条。

    JDesktopPane与JInternalPane

    在一个窗体出现多个子窗体,每个子窗体都无法超出父窗体的区域,其中JDesktopPane规定了一个父窗体的基本形式,JInternalPane规定了各个子窗体,JInternalPane需要加入到JDesktopPane中,JDesktopPane有2个方法,JInternalPane有3个方法.

    事件处理

    所有事件类都是EventObject类的子类。事件监听器是能够接收和处理事件的对象,所有事件监听器都是以监听接口的形式出现,处理时需要实现此接口。

    WindowListener

    专门处理窗体事件的监听接口。
    使用窗体的addWindowListener(监听对象)方法即可注册事件监听。
    在不需要对所有事件进行监听时,为了便捷,在实现类和接口之间增加一个过渡的抽象类,子类继承抽象类就可以根据需要进行方法覆写,因此在事件处理中有很多的Adapter(适配器)类;如果某个监听处理只需操作一次,可以利用匿名内部类来完成操作。

    键盘事件及监听处理

    对键盘的操作进行监听可以直接使用KeyListener接口,此接口定义了3个方法,也可以使用KeyAdapter适配器进行监听。
    如果要取得键盘键入的内容,可以通过KeyEvent取得,如:返回所按的键的信息 KeyEvent.getKeyText(e.getKeyCode),e是KeyEvent型的参数。
    append方法可以追加输出内容,getKeyChar()方法无法识别功能键。

    鼠标事件及监听处理

    要对一个鼠标的操作进行监听,可以使用MouseListener接口,有5个方法,也可以使用MouseAdapter适配器进行监听。
    每个鼠标事件触发后会产生MouseEvent事件,这个事件可以得到鼠标的相关操作。

    单选钮

    单选钮及在给出的多个显示信息中指定选择一个,在Swing中可以用JRadioButton完成一组单选钮的操作,有9个方法。
    使用ButtonGroup可以将所有同类型的单选钮加入到一个组中,达到单选效果,但是只是在逻辑上将其分组,在加入容器时,还是用一般的方法。
    JRadioButton操作可以使用ItemListener接口进行事件监听,有1个方法,没有相应的适配器方法,有ItemEvent事件。

    JMenu与JMenuBar

    JMenu可以建立菜单组件,建立完多个JMenu组件后,需要通过JMenuBar组件将其加入窗口中,JMenuBar组件的功能是用来摆放JMenu组件。

    JMenuItem

    使用JMenuItem组件可以为菜单中加入菜单项,JMenuItem可以理解为一种特殊的JButton组件,所以选择菜单项时会触发ActionEvent事件。
    设置某个字符为助记符后,菜单项并不会显示出该助记符,要在该菜单项的命名上作出显示,然后该助记符底下会有一条下划线。

    文件选择框JFileChooser

    使用JFileChooser组件可以通过文件选择框选择要打开或保存的文件。

    JDBC

    主要操作类及接口
    java.sql.DriverManager 用于管理jdbc驱动程序
    Java.sql.Connection 用于建立与特定数据库的连接
    Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果
    Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口
    Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问
    java.sql.Date 用于表示与SQL DATE相同的日期类型,该日期不包括时间
    java.sql.Timestamp 用于表示SQL时间戳,并增加了一个能表示ns(纳秒)的时间域
    等等...

    MySQL数据库

    常用命令

    连接MySQL数据库:mysql -u 用户名 -p 密码
    创建数据库:CREATE DATABASE 数据库名称;
    删除数据库:DROP DATABASE 数据库名称;
    使用数据库:USE 数据库名称;
    创建数据库表:
    CREATE TABLE 表名称(
    字段名称1 字段类型 [DEFAULT 默认值] [约束],
    字段名称2 字段类型 [DEFAULT 默认值] [约束],
    ...
    字段名称n 字段类型 [DEFAULT 默认值] [约束]
    );
    删除数据库表: DROP TABLE 表名称;
    查看表结构:DESC 表名称;
    查看全部数据库:SHOW DATABASE;
    查看一个数据库的全部表:SHOW TABLES;

    SQL语法基础

    创建数据库时人员编号使用AUTO_INCREAMENT完成自动增长列的操作。
    MySQL数据类型23种。
    向表中增加数据:INSERT INTO 表名称[(字段1,字段2,字段3,...,字段n)]VALUES(值1,值2,值3,...,值n);
    删除表中数据:DELETE FROM 表名称 [删除条件]; 删除条件最好要指定,如果没有指定,则表示删除一张表中全部数据。
    更新数据:UPDATE 表名称 SET 字段 1=值1,...,字段n=值1 [WHERE 更新条件]; 更新条件最好要指定,如果没有指定,则表示修改一张表中全部数据。
    查询数据:
    SELECT {*|column alias}
    FROM 表名称 别名
    [WHERE condition(s)]; --->设置查询条件

    加载数据库驱动程序
    package database;
    
    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();
            }
        }
    }
    
    连接及关闭数据库

    使用DriverManager类连接数据库和Connection接口
    连接地址格式:
    jdbc:mysql://IP地址:端口号/数据库名称

  • 相关阅读:
    java:UDP广播发送与接收数据报实现
    使用Python自由切分pdf文件提取任意页面
    python实现 -- 盆友圈九宫格
    三次登陆
    django 连接 已有数据库 导出 models表
    默认列表转字典
    代码中的去掉注释
    python 列表套字典 根据相同的key分组
    python 列表套列表去重,列表套字典去重
    Tengine更新安装
  • 原文地址:https://www.cnblogs.com/LeeMayZ/p/12012730.html
Copyright © 2011-2022 走看看