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

    2019年Java学习课程总结

    一丶java基础语法

    1、java数据类型

    基本数据类型:byteshortintlongdoublefloatooleanchar
    引用数据类型:各种java类、接口、数组
    注意:为了迎合java一切都是对象的理念,给八大基本数据类型都提供了相应的“包装类”,即:ByteShortIntegerLongDoubleFloatBooleanChar
    装箱:术语,将基本数据类型变成包装类型,如:int a = 10, Integer b=a;
    拆箱:术语,将包装类型转为基本数据类型, 如:Integer a = 10,int b = a;
    一个字节=8位

    2、条件分支语句

    If语句
    If(条件表达式){
    若条件表达式为真,则{}中的代码会得到执行
    }

    If else语句
    If(条件表达式){
    代码1:如表达式的结果为真,则代码1得到执行,否则执行代码2
    }else{
    代码2
    }

    If else if语句
    判定条件类似于if else语句
    Switch语句
    Switch(表达式){
    Case 表达式值1:
    代码1
    Break;
    Case 表达式值2;

    代码2
    Break;
    }
    注意:条件表达式,即表达式的值只有两个结果,true和false

    3、循环语句

    Do_while 循环:不管条件是真还是假,循环总会执行一次
    Do{
    代码1
    }while(条件表达式){
    代码2
    }

    While循环:
    只要条件表达式为真,则循环开始,循环执行代码1,遍历结果集常用、TCP服务端监听客户端链接
    While(条件表达式){
    代码1
    }

    普通for循环

    普通for循环三要素:
    初始化变量、条件表达式、迭代,三个要素以“;”间隔,普通for循环中,这是三个要素都可以省略不写,但两个“;”必须保留。

    For(int i=0; i<10; i++){
    代码1:循环体
    }

    4、运算符

    算术运算符
    即:+ - * / %

    逻辑运算符
    即:> < >= <= != ==

    条件运算符
    即:&(与) |(或) !(非)
    注意短路与 && 和 短路或|| ,效率高于长路

    自增自减运算符
    ++y:现加1,然后在把加1后的y参与运算,即:先加后运
    Y++:先将原来的y参与运算,然后在将y加1,即:先运后加

    自减同上!

    注意:还有一些效率较高的运算符 += -= *= /= %=,如:a+=b,等价于a=a+b

    二、面向对象

    1、面向对象的三大基本特征

    封装、继承、多态

    2、变量的概念

    作用:保存各种数据

    1、类型:

        全局变量:定义在类中的变量,称之为全局变量
                    Public class User{
    

    Private int age; //全局变量
    }
    局部变量: 定义在方法中、各种循环中的变量称之为局部变量
    Public class User{
    //方法
    Public void info(int age){ //age为局部变量
    }
    }

    作用域:
    作用域即变量的作用范围:
    全局变量的作用域最大:覆盖整个类即本类的各种方法中,都可以使用该变量
    局部变量的作用域最小:在方法重定义局部变量,该变量只能在本方法重使用
    变量的使用:
    变量的使用包含变量的声明和赋值,一般,声明和赋值同时完成,如int a =10

    3、类

    类是java程序最小的组成单元 (C语言等面向过程的变成语言,最小程序单元是函数)
    类的作用:
    类是产生对象的模板,类是同类对象的高度抽象,类是一种引用数据类型

    类的定义:
    使用class关键字

    类的分类:
    普通类:常用

    抽象类:abstract关键字

    内部类:少见

    Final类:比如String类,不能派生子类

    抽象类:
    使用abstract关键字修饰的类,抽象类最大的特点:
    a、有构造方法,但不能创建对象
    b、可以包含抽象方法(只有方法定义,没有方法体的方法)
    //抽象类
    Public abstract class Shape{
    Public abstract info(); //抽象方法
    }
    c、若一个类中包含抽象方法,则该类必须被定义成抽象类
    d、抽象类的目的只有一个,被子类继承

    类的成员:
    成员变量(全局变量、实例变量)
    每一个属于该类的对象,都包含该成员变量

    成员方法(实例方法)
    每一个属于该类的对象,都包含该成员方法

    构造方法(构造器、构造函数)
    初始化成员变量,创建类的对象
    代码块(普通代码块、静态代码块)

    完成类似于构造方法的初始化动作
    常量:
    使用final关键字修饰的变量,称之为:常量,常量必须显示的初始化,并且
    初始化之后不能更改值。如:double final pi=3.14
    类变量(静态变量):
    使用static 关键字修饰的变量,称之为:类变量,又称:静态变量,静态变量属于类级别,可以直接使用类名访问,不需要创建对象即可访问,如:User.age

    4、方法(函数)

    1. 方法的概念:
      在类中,用于处理数据的成员,方法是类中最重要的成员之一。
      方法的定义:
      定义方法,必须有的要素有:返回值、方法名(参数),这三个要素称之为方法签名,如: void info(){
      //方法体
      }

    2. 方法的分类:
      (1)普通方法:
      即一般的成员方法,如: public void method(int age){
      }

    (2)抽象方法:
    即使用abstract关键字修饰的方法,如:public abstract info();

    (3)静态方法:
    即使用static关键字修饰的方法,静态方法与静态变量一样,都属于类级别,调用静态方法直接使用类名即可,不需要创建对象,如:User.info()

    方法的返回值:
    所谓返回值,即通过方法的一系列处理或计算之后,得出的结果,因为方法的主要功能就是计算和处理各种数据,若:方法的设计者,设计方法时,需要该方法计算数据同时要将计算结果告诉(返回)给方法的调用者,则,该方法一般需要设置返回值,反之,若方法的设计者设计方法时,只希望该方法完成计算和数据处理工作,而不需要告诉(返回)结果给方法调用者,则该方法一般不需要设置返回值。

    返回值的类型:
    返回值可以是java所支持的一切数据类型(基本数据类型和引用数据类型)
    若没有返回值,则使用void关键字代替

    方法的命名:
    方法代表功能,一般使用动词作为方法名,需要符合java命名规范

    方法的参数列表:
    如果方法处理的数据是动态的,来自于方法外部,则可以通过参数列表传入

    方法内部进行处理,否则,可以不需要设置参数列表。

    方法的重载
    “两同一不同”
    同一个类中,相同的方法名,但参数列表不同(参数的个数、顺序、类型)

    方法的重写:
    “两同两小一大”
    方法名相同、参数列表相同、返回值更小、抛出的一场类型更小,访问权限要更大。

    5、面向对象之:封装

    封装的概念:
    隐藏该隐藏的,暴露该暴露的,封装包含两层概念:隐藏和封装。
    封装的实现:
    通过四个访问控制符,实现不同程度的访问权限控制
    Private
    权限最严格,可以修饰变量和方法,被private修饰的变量和方法,只能
    在本类中访问
    Protected
    权限比private宽松,可以修饰变量和方法,可以在本类及不同包中的子类访问,一般protected修饰的方法,都希望被子类重写。
    默认
    没有任何访问控制符,可以在本类及不同包的非子类访问
    Public
    权限最宽松,可以修饰变量和方法,可以被本类及不同包中的子类、非子类访问。
    一般:
    严格意义上的封装,所有的属性都应该使用private修饰隐藏在本类中,
    不允许外界直接修改或直接访问,与此同时,为了方便外界访问该类中的信息,需要给这些被隐藏的属性提供相应的getter和setter方法,此即为:隐藏和暴露

    6、面向对象之:继承

    继承的实现:
    Java继承,通过extends关键字,子类继承父类。
    继承的作用:
    子类继承父类,可以获取父类中除private修饰的所有属性和所有方法。
    注意:子类并不能获取到父类的构造方法,但可以在子类构造方法中通过super
    关键字调用父类构造方法,且创建子类对象时,必须先调用父类构造方法。

    继承的特点:
    Java只支持“单继承”,一个子类只允许有一个直接父类,但允许子类有多个
    间接父类。

    7、面向对象之:接口

    接口的概念:
    接口是比抽象类更加抽象的引用类型

    接口的定义
    定义接口使用interface关键字,接口跟类是同级别的

    接口的成员:
    公共静态常量:即使用public static final 修饰的变量,修饰符可以不用谢,接口会默认添加

    公共抽象方法:
    即使用public abstract 修饰的方法,修饰符也不需要显示添加。
    注意:接口没有构造方法!

    接口的使用:
    为了解决java单继承带来的不足,一个类继承了父类之后,不能再有其他直接父类,从一定程度上限制了类的功能扩展,而接口可以多实现,接口的使用就在于被实现,一个接口可以继承多个父接口,多个父接口之间用英文逗号分隔;一个类可以继承一个父类,还可以实现多个接口,接口之间同样使用逗号分隔。
    注意:若一个类既需要继承父类,也需要实现接口,则继承在前,实现在后

    实现接口使用“implements”关键字,一个类实现某个接口,若接口中定义了抽象方法,则该实现类必须强制实现(重写)抽象方法。
    类A、B接口 C D E
    A extends B implements C,D,E

    在学习SSM框架以及真实的企业项目开发时,通常建议“面向接口编程”。

    8、面向对象之:多态

    1.多态的概念:
    当编译时类型(声明对象的类型)和运行时类型(真实的对象类型)不一致时,产生多态,如:Animal a = new Dog();
    2.多态的前提
    有继承(有实现),有重写,只有在子类继承父类,或者实现类实现接口时,
    方能产生多态,如:上述的Dog类,要么是Animal类的子类,要么是Animal接口的实现类,否则无法产生多态。
    在如:List list = new ArrayList();

    9、内存分析

    栈内存:保存各种变量
    堆内存:保存各种对象
    如:Person p = new Person();
    首先,创建了一个Person类型的变量p,保存在栈内存中
    然后,创建一个Person对象,保存在堆内存中,由于堆内存中的数据无法直接获取,故,将堆内存中的该对象的内存地址,赋值给变量p,这个过程称之为“引用”

    三、 异常机制

    异常的处理机制
    通过五个关键字组合使用
    Try:try中编写的是可能出现的异常的代码
    Catch:捕获并处理异常情况
    Finally:编写由于异常导致程序终端,某些物理资源及时关闭
    Throws:声明抛出异常
    Throw:抛出异常
    一般而言,异常处理建议当机立断,不要把异常抛给JVM

    四丶数组

    数组的概念
    用于存储多个数据的结构,数组跟类和接口一样,数组也是引用数据类型
    数组的定义
    动态初始化
    只确定数组的长度,数组的元素不指定,如int[] a = new int [10];
    静态初始化
    即确定数组的长度,也确定数组的元素,如int[] a =new int[] {1,2,3,4,5};
    使用时机:当元素确定时使用静态初始化,当元素值的来源是通过程序动态获取的,则使用动态初始化。
    数组的访问:
    数组具有索引下标,可以通过下标访问数组的元素,如: a[1]
    数组工具类:
    Arrays类,通过数组工具类,可以给数组排序、查询最大值、最小值等操作。
    集合的元素类型:
    通常,定义数组,一般定义的时int 、String、double、等基本数据类型的数 组,实际上,数组的元素类型可以是任何Java所支持的数据类型,如:
    Student[] students= new Student[10];
    User[] users= new User[5];
    String[] strs= new String[19]

    五丶JavaIO

    IO的四个基类
    inputStream:字节输入流基类
    outputStream:字节输出流基类
    Reader:字符输入流基类
    Writer字符输出流基类
    流的分类
    按流的方向
    输出流
    输入流
    按流的单位:
    字节流
    字符流
    按流的功能:
    节点流
    包装流
    常用的流:
    文件流
    文件输入流:FileInputStream FileReader
    文件输出流:FileOutputStream FileWriter
    文件流用于读写文件,包括二进制文件和文本文件(能用记事本打开并看到内容的文件称之为文本文件,若记事本打开是乱码,则是二进制文件)
    文件的常用方法:
    Read方法:从输入流中读取数据
    Write方法:向输出流中写出数据
    打印流:
    字节打印流:PrintStream
    字符打印流:PrintWriter
    打印流常用方法:
    Print方法:写出数据,不换行
    Println方法:写出数据换行
    注意:打印流没有输入流,只有输出流
    缓冲流:
    字节缓冲输入流:BufferedInputStream BufferedReader
    字节缓冲输出流:BufferedOutputStream BufferedWriter
    缓冲流属于包装类,创建一个缓冲对象需要在构造方法中传入另一个已经存在的流对象,此乃包装之意;
    缓冲流效率高,速度快,常用方法:
    Read和write方法
    Readline方法:一次性读取一行数据
    对象流:
    对象输入流:ObjectInputStream
    对象输出流:ObjectOutputStream
    对象流的功能:
    将数据(对象)写入磁盘、网络,将对象从磁盘、网络恢复。
    序列化:
    在Java程序中,所有程序中通过new关键字创建出来的对象,都保存在内存当中,当程序停止运行或内存回收后,这些对象,将不复存在,下一次要使用这些对象必须重新创建,极大的耗费时间和JVM效率,为此,可以将这些对象从内存中永久保存到磁盘中,这个过程称之为“序列化”。
    通过对象输入流实现。
    注意:对象要序列化,则高对象所对应的类必须实现“Serializable”序列化接口,否则会引发异常。
    对象常用方法:
    ReadObject()方法,
    WroteObject(对象)方法

    六丶多线程

    程序的概念
    程序是由一组特定的计算机语言编写的,以文件的形式组成的文件集合,程序没有运行时,这些文件就保存在磁盘中,程序得到运行时,这些文件会动态加载到内存中,从而消耗CPU资源和内存资源。
    进程的概念
    进程时运行中的程序的执行流, 一个程序运行时可以有一个或者多个进程同时运行,进程之间通讯困难,同一程序的多个进程之间各自占用cpu资源。
    并发:
    同一时刻,多个进程抢占CPU,宏观上,进程之间是同时执行,但微观上看,这进程时分时执行的,谁抢到CPU谁执行,轮换时间20ms左右
    并行:
    同一时刻,多线程之间不管是微观还是宏观,他们是真正意义上的同时执行
    线程的概念
    线程是进程中的任务流,一个进程有一个线程,也可以同时有多个线程,多个线程之间共同分享该进程所占用的CPU和内存资源,线程之间的调度和轮换由进程负责控制。
    Java天生就支持多线程。
    线程的实现
    Java实现多线程,有四种方式:
    1)继承Thread类,重写run方法
    2)实现Runnable接口,重写run方法
    3)继承TimeTask类,使用Timer类,重写run方法
    4)实现Callable接口,重写run方法
    Run方法是线程执行体,也即线程所需要完成的任务,程序不能主动调用run方法,线程会自动调用run方法,执行其中的代码;若主动调用run方法,则不再具备多线程的能力。
    线程的生命周期
    新建状态(new)
    线程对象通过new关键字创建,仅此而已!
    可运行状态(runnable)
    线程对象调用了start方法,已经启动,随时听候调度,抢占CPU
    运行中状态(running)
    已经启动完成的线程,获取了CPU资源,正在执行run方法
    阻塞状态(block)
    正在运行中线程,遇到阻塞操作,如休眠sleep、IO阻塞等,进入阻塞状态
    死亡状态(dead)
    线程的run方法执行完毕,线程死亡,线程对象被回收。

    七丶图形界面

    java的图形界面开发中可使用的技术有 AWT 和 Swing两种。AWT是大量使用了Windows的系统函数,Swing则是由Java来实现的用户界面,它可以在任意系统平台工作。
    AWT,是抽象窗口工具包,它中的所有工具类都保存在java.awt包中,此包中的工具类主要分为:
    1.组件:Component
    2.容器:Container
    3.布局管理器:LayoutManager
    Java中所有的Swing都保存在javax.swing包中
    基本容器:JFrame
    使用Swing创建一个窗口,直接使用JFrame类即可。

    布局管理器
    FlowLayout:流式布局管理器
    BorderLayout:将一个窗体的版面划分为东西南北中,可以直接将需要的组件放入这5个区域中。复杂一点就是在这5个区域中放入其他的容器,再在那些容器中使用布局管理器放一些组件。
    GridLayout:以表格的形式进行管理,使用此布局管理器时必须设置显示的行数和列数。显示的时候它是行优先,先会保证行。 计算器的操作可以使用此布局管理器。
    CardLayout:将一组组彼此重叠地进行布局,就像一张张卡片一样,每次只会展现一个界面,图片的浏览就可以使用此布局管理器,我感觉用手机看小说翻页的时候和这个也是一样的。复杂一点可以在每一个界面放置容器,再加组件,每个界面都可以是不一样的东西。
    绝对定位:使用pulbic void setBounds(int x , int y, int width, int height)来定位一个组件的坐标和大小.

    JPanel
    在JPanel中可以加入任意组件,然后直接将JPanel容器加入到容器中即可显示,JPanel默认布局管理器为流布局管理器
    JSplitPane
    功能:分割面板,将一个窗体分为两个子窗体,可以水平可垂直

    八丶JDBC

    JDBC的概念
    数据库如SqlServer、MySQL等都是独立的软件系统,而Java程序是一门独立的编程语言,任一一门编程语言所编写的程序,若离开数据库,则都是没有实际作用的,因此,必须将独立的Java程序和独立的数据库系统建立连接,
    

    在Java中,这种连接技术称之为“JDBC”java database connection.

    JDBC的技术组成

    1)数据库连接对象

    Connection接口:通过
    DriverManager.getConnection(数据库的URL,username, password)获取

    2)语句对象

    用于发送sql语句给数据库系统,常用的语句对象为预编译的语句对象,
    即:PreparedStatement,通过
    Connection.preparedDtatement(string sql )方式获取。
    常用的方法:
    SetXXX方法:给占位符赋值,占位符从1开始
    ExequteQuery方法:执行查询的sql语句,获取结果集对象
    ExequteUpdate方法:执行增删改的sql语句,返回受影响的记录条数。

    3)结果集对象

    ResultSet接口,只有执行查询的sql语句,才能返回结果集。
    常用方法:
    GetXXX方法:获取结果集中特定的列的、特定的行的值

    4)数据库连接池

    比如C3P0连接池
    连接池负责维护多个数据库连接对象,即多个Connection对象,当需要使用时,从连接池中获取一个连接对象使用即可,不在需要每一次都创建,用完之后返回连接池即可,不需要每一次与都输入URL、用户名等信息。

    本学期学的东西很多,很新鲜。但是还存在很多的不足,学的不够精,学的不够广也不够多,还有更多更难的知识等着我们去学习,不能够放松了对java的学习。

  • 相关阅读:
    page1
    CodeForces
    树、递归————二叉树的所有路径
    树(未完)
    树、递归、遍历————二叉搜索树的最近公共祖先
    树、递归————翻转二叉树
    树、递归————路径总和
    树、递归、广度优先搜索(BFS)————二叉树的最小深度
    树————平衡二叉树
    平衡二叉树AVL
  • 原文地址:https://www.cnblogs.com/20188382llz/p/12035545.html
Copyright © 2011-2022 走看看