课程总结

课程总结

本学期面向对象与Java程序设计课程已经全部结束了,但Java程序设计的学习还远未到终点,大家就本学期的课程作一个全面的总结吧。

学期学习总结:

1.数据类型

不同数据类型可表示的数据范围,由低到高分别是byte、short、char--》int--》long--》float--》double。数据类型的转换包括自动类型转换和强制类型转换,如果数据超过原有数据类型可表示的范围,就需要进行强制类型转换。

2.运算符

有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。逻辑运算符包括与和或,与要求返回值都为真,结果才为真,或只要有一个为真结果就为真。与中有“&”和“&&”,“&”要求所有条件都判断,而“&&”如果第一个条件为false,则后面的条件将不再判断。或包含“|”和“||”,“|”要求条件都判断,“||”第一个条件为true,则后面的条件将不再判断。

3.类和对象

对象是一类事物的实例,是具体的类是对一类事物的描述,是抽象的类是对象的模板,对象是类的实体。类中包括声明成员变量和定义方法的内容。然后为了使用这个类,就必须创建并实例化对象,就可以使用对象访问类中的属性或方法,调用tell()方法把内容输出。其中注意使用对象前必须实例化。每个类都可以产生多个实例化对象,只要在实例化对象中使用了关键字就开辟了新的堆内存空间,每一个实例化对象都会有自己的堆、栈内存空间。

类的定义:

class 类名称{
    数据类型 属性;
    ·····
    public 返回值的数据类型 方法名称(参数1,参数2,···)
            程序语句;
            [return 表达式;]
    }
   }

创建对象:

类名 对象名称=new 类名();

4.封装性

封装性是面向对象的第一大特性,封装方法是在属性名称和方法名称前加private,加入此关键字后程序无法进行编译,不能由对象直接进行访问,必须通过setter和getter方法设置和取得。

5.构造方法

构造方法定义:

class 类名称{
    访问权限 类名称(类型1 参数1,类型2,参数2,···)
        程序语句;
    ·····
    }
}

1)构造方法的名称必须与类名称一致;
(2)构造方法的声明处不能有任何返回值类型的声明;
(3)不能在构造方法中使用return返回一个值。

6.String类

string可以采用直接赋值的方式进行操作,也可以通过new方法实例化,String的比较有两种方式:2个字符串使用==比较运算符,比较的是地址值,如果使用的是equals方法,比较的是字符串内容是否相等。

7.this关键字

 (1)可以使用this强调本类中的方法、 

(2)表示类中的属性、 

(3)可以使用this调用本类的构造方法、

(4)this表示当前对象、

8.static关键字

    1)修饰成员变量和成员方法

    2)静态代码块

    3)修饰类(只能修饰内部类)

9.继承

子类可以继承父类非private的属性、方法。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。子类可以用自己的方式实现父类的方法。Java的继承是单继承,不可以多重继承,允许进行多层继承。子类对象在实例化之前会默认调用父类中的构造方法。所以在实例化子类对象之前需要先将父类中的属性进行初始化。

继承格式:

class 父类{}
class 子类 extends 父类{}

10.方法的覆写

子类定义了与父类方法名称,返回值类型、参数类型及个数完全相同的方法。被覆写不能够拥有比父类更为严格的控制权限。public>default(不加任何说明 包访问权限)>private(只能在本类中使用)

重载:方法名称相同,参数的个数或类型不同。不能有两个名字相同,参数类型也相同却返回值不同的方法。

方法的重载和覆写的区别:

重载 覆写
方法名称相同,参数的个数及类型不同 方法名称,返回值类型,参数的个数,参数的类型均相同
对权限没有要求 被覆写的方法不能拥有比父类更严格的访问控制权限
发生在一个类中 发生在继承类中

11.super关键字

使用super可以从子类中调用父类的方法、属性。super()和this()均需放在构造方法内第一行,因此与this不能同时出现,main方法不能使用this和super。

12.final关键字

1).使用final声明的类不能有子类
2).使用final声明的方法不能被子类所覆写
3).使用final声明的变量即为常量,不可修改

13.抽象类和接口

●抽象类的定义格式

●抽象类的定义格式
abstract class 抽象类名称{
属性 ;
访问权限 返回值类型 方法名称(参数){ // 普通方法
[return 返回值] ;
}
访问权限 abstract 返回值类型 方法名称(参数) ; // 抽象方法
// 在抽象方法中是没有方法体的
}

  

接口:接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。接口中的抽象方法必须定义成public访问权限,这是不可改变的。接口要使用也必须通过子类,子类通过implements关键字实现接口。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

接口的定义:

interface 接口名称{
    全局常量;
    抽象方法;
}

接口与类的区别:

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

对象的多态性

(1)方法的重载和覆写。

(2)对象的多态性:1.向上转型:子类对象——》父类对象。2.向下转型:父类对象——》子类对象。

向上转型:使用父类对象接收子类实例(自动完成),生了向上转型,是父类对象,然后去调用那些父类中的方法,会发现,被调用的依然是子类中覆写过的方法,如果没有覆写过这些方法,则才会调用父类中的方法,调用子类独有的方法和属性就会报错了,

向下转型:使用子类对象接收父类对象,就是将父类对象变为子类对象(需要强制转型),在进行向下转型时,必须先进行向上转型,否则会出现类型转换异常(ClassCastException)。

14.抽象类与接口的关系

序号

区别点

抽象类

接口

1

定义

包含一个抽象方法的类

抽象方法和全局常量的集合、

2

组成

构造方法、抽象方法、普通方法、常量、变量

常量、抽象方法

3

使用

子类继承抽象类

子类实现接口

4

关系

抽象类可以实现多个接口

接口不能继承抽象类,但允许继承多个接口

5

常见设计模式

模板设计

工厂设计、代理设计

6

对象

都通过对象的多态性产生实例化对象

 

7

局限

抽象类有单继承的局限

接口没有单继承的局限

8

实际

作为一个模板

是作为一个标准或是表示一种能力

9

选择

如果抽象类和接口都可以使用的话,优先使用接口,因为避免单继承的局限

 

10

特殊

一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类

 

15.异常

try{
被检测的代码
可能出现异常的代码
 }catch(异常类名 变量){
异常的处理方式
循环,判断,调用方法,变量


 }finally{
必须要执行的代码
 }

Exception在程序中必须使用try catch进行处理,RuntimeException可以不使用try catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。Exception:一般表示的是程序中出现的问题,可以直接使用try…catch处理。Error:一般指的是JVM错误,程序中无法处理。

异常中的关键字:throw 在方法的内部,抛出异常对象,throws用于方法的声明上,表名此方法可能出现异常请调用者处理,throws 后面必须写异常类的类名。

16.多线程

Java 提供了三种创建线程的方法:

  • 通过实现 Runnable 接口;

为了实现 Runnable,一个类只需要执行一个方法调用 run(),声明如下:public void run()

  • 通过继承 Thread 类本身;

创建一个新的类,该类继承 Thread 类,然后创建一个该类的实例。继承类必须重写 run() 方法,必须调用 start() 方法才能执行。

  • 通过 Callable 和 Future 创建线程

实现Runnable接口可以实现资源共享而继承Thread类不能资源共享,也就是实现Runnable接口是多个线程共同完成一个任务,继承Thread类是一个是多个线程分别完成自己的任务。

使用同步解决问题:

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

17.java IO

1.使用File操作文件

使用File类可以进行创建或删除文件等常用操作

File.pathSeparator表示“;”,File.Separator表示“"。createNewFile()方法创建文件,mkdir()方法创建文件夹。

18.字节流和字符流

1.字节流:

字节输出流:OutputStream

OutputStream类的常用方法

序号

方法或常量

类型

描述

1

public void close()throws IOException

普通

关闭输出流

2

public void flush()throws IOException

普通

刷新缓冲区

3

public void write(byte[] b)throws IOException

普通

将一个byte数组写入数据流

4

public void write(byte[] b,int off,int len)throws IOException

普通

将一个指定范围的byte数组写入数据流

5

public abstract void write(int b)throws IOException

普通

将一个字节数据写入数据流

字节输入流:IntputStream

IntputStream类的常用方法

序号

方法或常量

类型

描述

1

public int available() throws IOException

普通

可以取得输入文件的大小

2

public void close()throws IOException

普通

关闭输入流

3

public abstract int read()throws IOException

普通

读取内容,以数字的方式读取

4

public int read(byte[] b)throws IOException

普通

将内容读到byte数组之中,同时返回读入的个数

2.字符流:

字符输出流:Write

Write类的常用方法

序号

方法或常量

类型

描述

1

public abstract void close()throws IOException

普通

关闭输出流

2

public void write(String str)throws IOException

普通

将字符串输出

3

public void write(char[] cbuf)throws IOException

普通

将字符数组输出

4

public abstract void flush()throws IOException

普通

强制性清除缓存


Reader类的常用方法

字符输入流:Reader

序号

方法或常量

类型

描述

1

public abstract void close()throws IOException

普通

关闭输出流

2

public void read()throws IOException

普通

读取单个字符

3

public void read(char[] cbuf)throws IOException

普通

将内容读到字符数组之中,返回读入的长度

3.字节流与字符流的区别

  • 字符输入:字节(磁盘)–> 自动转换为 –>字符(内存);
  • 字符输出:字符(内存)–> 自动转换为–>字节(磁盘);

在利用字符流输出的时候,所有的内容实际上都只是输出到了缓冲区中(内存)。在使用close()方法关闭的时候会将我们缓冲区的数据进行输出,如果没有关闭,那么就将无法进行输出,此时可以利用flush()方法进行强制的输出。

19.容器和事件处理

1.JPanel

  可以将多个组件加入到JPanel中以实现复杂的排列,一个界面只可以有一个JFrame窗体组件,但是可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout,BorderLayout,GridLayout等各种布局管理器,这样可以组合使用,达到较为复杂的布局效果。

2.JSplitPane

  JSplitPane用来将窗口分割成两个部分。JSplitPane提供两个常数让你设置到底是要垂直分割还是水平分割。这两个常数分别是:HORIZONTAL_SPIT,VERTICAL_SPLIT

3.JTabbedPane

  JTabbedPane创建的选项卡可以通过单击标题或者图标在选项卡之间进行切换。

4.JScrollPane

  主要功能是为显示的内容加入水平滚动条。

文本组件:

单行文本输入框:JTextField

密码文本输入框:JPasswordField

多文本输入组件:JTextArea

20.监听适配器

监听接口中有很多抽象方法,在实现接口的时候,需要重写所有的方法,但经常只会用到其中的一个或两个,这无疑是一种多余。于是出于简化的目的,每个还有多个方法的的监听器接口都配有一个适配器类,这个类实现了接口中的所有方法,但是每个方法没有做任何事情。通过继承适配器类,重写其中的需要使用的方法,不必重写全部的方法,简单方便

21.JDBC

一、JDBC-ODBC桥

    JDBC-ODBC 桥 是sun公司提供的,这种类型的驱动实际是把所有 JDBC的调用传递给ODBC ,再由ODBC调用本地数据库驱动代码。

  二、本地API驱动

     本地API驱动直接把JDBC调用转变为数据库的标准调用再去访问数据库。

  三、网络驱动

    JDBC先把对数局库的访问请求传递给网 络上的中间件服务器. 中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用 传给数据库服务器。

  四、本地协议驱动

    这种驱动直接把JDBC调用转换为符合相关数据库系统规范的请求。

22.数据库

1).加载数据库驱动程序

  1 加载Oracle数据库驱动  Class.forName("oracle.jdbc.driver.OracleDriver");

  2 加载SQL Server数据库驱动  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

  3 加载MySQL 数据库驱动  Class.forName("com.mysql.jdbc.Driver");

2).连接数据库

DriverManager类的常用方法

序号

方 法

类型

描述

1

public static Connection getConnection(String url) throws SQLException

普通

通过连接地址连接数据库

2

public static Connection getConnection(String url,String user,String password) throws SQLException

普通

通过连接地址连接数据库,
同时输入用户名和密码

个人总结:

这学期学习java刚开始由于有上学期学习c语言的基础感觉还不错,一些题目的代码和c语言差不多,再加上老师讲的比较透彻,学起来还算轻松。但是学到后面类和方法比较多,很容易搞混,需要多去写代码才能发现一些类和方法之间的区别,例如抽象类和接口在实现时感觉代码差不多,所以需要多多练习。当学到图形界面时,让我更直观的看到了写代码,写程序在日常生活中的作用,许多复杂的程序都是通过一行一行的代码实现的,而图形界面则是我们对一个程序的直接的感受和互动,学了这里更容易让我们理解程序运行原理,也会激发学习的兴趣。后面又学习了数据库之后,与前面联系起来就可以实现一个简单的登录操作程序了。所以这学期学完后还是感觉学到了很多东西,期待下一学期的学习!

原文地址:https://www.cnblogs.com/198266qq/p/12035232.html