Java期末复习

1.文件的命名:

主要是指当一个类被public关键字修饰时,该源文件的命名应该为 类名.java

若不被public修饰则源文件的命名可以是(任意.java)

2.标识符:熟悉标识符命名规则

命名规则:

注意点:标识符不能以数字开头关键字不能作为标识符使用、汉字也可以为标识符

Java中采用的字符集是Unicode字符集

3.数据类型:基本数据类型和引用类型

                基本数据类型:byte,char,short,int,long,double,float,boolean

                引用类型:类、接口、数组

            掌握类型转换:自动转换和强制类型转换

                           引用类型:类,数组,接口

字面量:小数默认double类型整数默认int

例如4.5 是double类型,45 是int 类型

4.字符串:

   定义:String str1=“hello”;

         String str2= new String(“hello”);

         String st3 = new String(char arr[]);

   常用方法:

  1. length():获取字符串的长度
  2. charAt(int index):返回指定索引处的字符
  3. substring(int beg,int end):返回指定范围内的子串
  4. equals(String str):比较两个字符的内容是否相同,相同返回true,否则返回false
  5. indexOf(String str)功能是返回指定子字符串在此字符串中第一次出现处索
  6. toUpperCase():功能是将此 String 中的所有字符都转换为大写。
  7. valueOf(int i):功能是返回 int 参数的字符串表示形式。

   扩展:如何将一个字符转换为int型数据:

     例如

           String age1 = “15”;

           int age2 =Integer.parseInt(age1);

           String str1,str2;若str1==str2比较的是地址;str1.equals(str2)比较的是内容

    注意点:String内容是固定的,不能改变

    StringBuffer和StringBuilder:字符串可以改变,StringBuffer是线程安全的,可以应用这两个类实现对字符的插入和追加,对应方法为insert()、append()

5.类与对象:

   成员变量:定义在类中,方法体外的变量

   局部变量:方法中的变量,包括方法中的参数、方法内的变量、返回值。局部变量要赋初值

   构造方法:在一个类中,方法名与类名相同的方法

   方法重载:在一个类中,方法名相同,参数列表不同。其中参数列表包括参数类型、参数个数、参数排列顺序

6.访问控制修饰符

  public:修饰类、变量和方法,公有的,任何包都可以访问

  private:私有的,修饰变量和方法,只能在类的内部使用

  protected:受保护的,修饰变量和方法,在同一包下或不在同包下但是具有继承关系的类

中可以访问

  default:默认的,可以修饰类、变量和方法,只在同包中可以访问

7.static和final关键字

   被static修饰的成员为类成员,可以通过类名.成员名

   静态方法引用的变量必须是静态的静态变量对所有对象来说是共享的

   final修饰的类是最终的类,不能被继承final修饰的方法不能被子类重写final修饰的变量是常量。

8.数组:

存储相同数据类型的数据结构。(既可以存储基本数据类型也可以存储引用类型数据),数组的长度不可以改变,定义数组一定要给出长度

  1. 一维数组

    定义:静态定义 int[] arr ={1,2,3,4,5}

          动态定义 int[] arr= new int[10];

    使用:通过数组下标引用数组中的元素 arr[i]下标从0开始

          数组长度=数组名.length;

遍历数组:通过for循环或增强for循环

    2.二维数组

 定义:静态定义int[][] arr={{1,2,3},{4,5,6}}

动态定义数据类型[][] 数组名=new 数据类型[n][m];

其中:n:为行,m为列,n必须存在,m可以有也可以没有

使用:通过数组下标引用数组的元素arr[n][m]

      数组长度=数组名.length;

     二维数组中某行中的元素:数组名[n].length;  

9.集合:

集合中只能存储对象或对象的引用,不能存储基本数据类型的数据,集合的长度是可变的,集合的接口和类在java.util.包中

Collection接口:ListSet接口的父接口

  1. List接口:继承Collection接口,列表类型,允许集合存储重复对象,而且有序        
    1. ArrayList:List接口的实现类,使用此类来实现对列表的随机访问操作,但对插入和删除操作效率较低
    2. ArrayList的常用方法
    3. int size():返回当前集合中的元素个数
    4. Object get(int index):返回集合中指定位置的元素
    5. boolean add(Object o):向集合中加入指定的元素
    6. LinkedList:对需要频繁从列表的中间位置添加和除去元素使用的类,执行此操作效率比ArrayList要高
    7. add(int index, E element): 在此列表中指定的位置插入指定的元素。
    8. addFirst(E e) :将指定元素插入此列表的开头。
    9. get(int index):返回此列表中指定位置处的元素
    10. remove(int index):移除此列表中指定位置处的元素。
    11. set(int index, E element):将此列表中指定位置的元素替换为指定的元素。
  2. Set接口:继承Collection接口,无序,存储对象不可以重复HashSet,TreeSet
    1. TreeSet底层是用自平衡的排序二叉树实现
    2. HashSet是按Hash算法来存储集合中的元素,通过自身调用hashCode()方法算出一个值,然后通过这个值查找元素在集合中的位置。
  3. 常用方法
    1. add(E e):如果此 set 中尚未包含指定元素,则添加指定元素。
    2. remove(Object o):如果指定元素存在于此 set 中,则将其移除。
    3. size():返回此 set 中的元素的数量(set 的容量)。
    4. contains(Object o):如果此 set 包含指定元素,则返回 true。
    5. iterator():返回对此 set 中元素进行迭代的迭代器
  4. Map接口:以“键-值对”方式存储元素,每个元素都包括键和值两部分,是值的标签信息,不可以重复,键和值之间存在单向一对一关系,键由Set存储
    1. HashMap常用方法
      1. object put(K key,V value)
      2. Set keySet():获取键值
      3. Object get(Object key

10.Java常用类

(1)Object类:Java中所有类的基类

常用方法:

  1. Object clone():创建并返回该对象的拷贝对象
  2. boolean equals(Object obj):比较两个对象是否是同一个对象(即地址是否相同)
  3. String toString():返回该对象的字符串表示形式
  4. hashCode():返回该对象的哈希码值。

(2)Scanner类:获取用户从键盘输入的不同数据,以完成数据的输入,此类在java.util包中。

            创建对象:Scanner sc = new Scanner(System.in);

            常用方法:String sc.next()接收键盘输入的内容,并以字符串返回

          int sc.nextInt();接收键盘输入的整数

(3)包装类:

                将基本数据类型封装成对象使用。有Integer、Short、Character、Float、Double、 Byte、Boolean、Long

                拆箱:将对象转换成基本数据类型

                装箱:将基本数据类型转换成引用类型

               常用方法:包装类.xxxValue():将对象转换为基本数据类型。其中xxx为基本数据类型包装类.parseXxxString s):把字符串转换为对应的基本类型

            包装类.valueOfString s):将基本类型的字符串生成相应类型的对象

11继承:

 Java的继承是单继承的,但通过接口间接的实现了多继承

 通过“extends”关键字实现继承

 变量的隐藏:当子类的成员变量与父类成员变量相同时,则子类的成员变量会隐藏父类的成员变量

 方法的重写:子类中定义与父类相同的方法(方法名、参数、返回值类型相同);子类的访问权限不能比父类方法中的访问权限低

 若要使用父类中被子类隐藏的成员变量或被重写的成员方法,则使用super关键字,使用方法:super.变量名、super.成员方法([实参列表])

 也可以使用super关键字在子类中调用父类的构造方法

super()super[实参列表]

向上转型:父类类型 变量名 = 子类对象

           变量名.父类方法()

向下转型:强制类型转换

 引用类型变量 instanceof 引用类型用于判断引用类型变量是否是引用类型或其子类或实现类的实例  “java” instanceof Object

  1. 抽象类:由abstract修饰的类

什么是抽象,抽象就是从多个事物中将共性的,本质的内容抽取出来。

抽象方法:多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,所以只有功能声明,没有功能主体的 方法(即没有具体方法体和操作实现的方法,仅有一个方法投)称为抽象方法,有抽象方法的类一定是抽象类。

抽象类怎么使用,由抽象类派生出子类,有子类来创建对象使用

    • abstract修饰的方法是抽象方法,含有抽象方法的类一定是抽象类,但抽象类中不一定含有抽象方法
    • 抽象方法只需要定义,不需要实现(连大括号都不能有)
    • 抽象类中可以有抽象方法也可以有非抽象方法
    • 抽象类不能被实例化,要通过其子类创建对象
    • 抽象类不能被final修饰
    • 实现抽象类就要实现抽象类中的所有抽象方法,否则,该类还是一个抽象类

public abstract  class  Animal{

}

public abstract class Person{

         public abstract void run();

}

public abstract class Flower{

         public  void bloom(){

}

}

  1. 接口

  定义: [修饰符] interface 接口名 [extends 父接口列表]

         {

静态常量;

方法声明;

}

  1. 修饰符只有public和默认两种
  2. 接口中的数据成员默认是public  static final 修饰的,即数据成员是全局静态

常量

  1. 从JDK8开始允许在接口中定义默认方法,默认方法使用default关键字修饰,

默认方法要有方法实现(方法体

  1. 从JDK8开始允许在接口中定义类方法,类方法必须使用static关键字修饰,类方法必须有方法实现(方法体),可以通过接口来调用
  2.  一个接口可以继承多个接口

实现:

  1. Implements关键字用于实现接口
  2. 一个类可以实现多个接口(接口与接口之间使用逗号隔开)
  3. 一个类实现接口,就要实现该接口的所有抽象方法

     接口与抽象类的相同点

  1. 接口和抽象类都不能被实现化,需要被其他类实现或继承
  2. 接口和抽象类的类型变量都可以指向实现类或子类的实例对象
  3. 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类时要实现这些抽象方法

      接口与抽象类的不同点

  1. 接口体现的是一种规范,是系统各模块应该遵循的标准,以便实现各模块之间的松耦合
  2. 抽象类体现的是一种模板设计,抽象类可以被当成系统实现过程中的中间产品,该产品已实现了部分功能但不能当成最终产品,必须进一步完善,而完善可能有几种不同方式
  3. 接口中除了默认方法和类方法,不能为普通方法提供方法实现,而抽象类则完全可以为普通方法提供方法实现
  4. 接口中的变量是静态常量,其实现类不能重新定义,也不能改变其值,抽象类中的变量与普通类一样可以重新定义,也可以改变其值
  5. 接口中的方法都默认是public
  6. 接口中不包含构造方法,而抽象类可以包含构造方法
  7. 抽象类是单继承,接口是多继承
  1. 内部类:在一个类的内部定义的类。内部类是外部类的一个成员,并且依附于外部类而存在。
  1. 内部类能够隐藏起来,不为同一包的其他类访问
  2. 内部类可以访问其所在的外部类的所有属性
  3. 在回调方法处理中,匿名内部类尤为便捷,特别是事件处理时经常使用
    • 成员内部类
  4. 成员内部类可以访问外部类的私有成员属性
  5. 外部类可以通过内部类对象来访问内部类的私有成员属性
  6. 在外部类的方法中可以访问内部类的成员,同时也可以在外部类的外部直接实例化内部类的对象。内部类对象实例化语法格式:外部类.内部类 对象名=new 外部类对象.new.内部类构造方法
    •  局部内部类:定义在方法中的局部内部类

注意:局部内部类不能用publicprivate访问修饰符进行声明作用域只在方法内

      除了所在的方法外,对其他方法而言是不透明的

      局部内部类可以访问包含它的外部类的成员,还可以访问局部变量,但这些局部变量必须被声明为final

    •  静态内部类:使用static关键字修饰的一个内部类

  静态内部类属于外部类本身,不属于外部类的某个对象,静态内部类可以包含静态成员,静态内部类不能直接访问外部类的实例成员,只能直接访问外部类的静态成员即类成员,要想访问外部类的实例成员,必须通过外部类的实例去访问;

    •  匿名内部类:没有名字的内部类

  匿名内部类不能有构造方法;匿名内部类不能定义任何静态成员、方法和类

  只能创建匿名内部类的一个实例;一个匿名内部类一定跟在new 的后面,创建其实现的接口或父类的对象

12.异常处理

  Java异常分为Checked(检查)异常<编译时发生>和Runtime(运行时)异常<运行时异常>,所有RuntimeException类及其子类的异常被称为Runtime异常,不属于该异常的都被称为CheckedException(检查异常),检查异常必须进行异常处理

检查异常(Checked 异常)有:

  1. ClassNotFoundException
  2. FileNotFoundException
  3. IOException
  4. SQLException

运行时异常有

  1. NullPointerException:空指针异常
  2. ClassCastException:类对象强制转换异常
  3. ArrayIndexOutOfBoundsException:数组下标越界
  4. ArithmeticException:算术异常
  5. NumberFormatException:字符串转换为数值所产生的异常

异常处理

  1. 异常捕获:try{}catch(Exception e)finally{}
  2. 抛出异常:throws(方法定义时),throw(抛出异常对象,方法内抛出,只能抛出一个对象)

异常常用方法

  1. printStackTrace():输出错误信息,用来跟踪异常事件发生时执行的堆栈内容
  2. getMessage():得到有关异常的信息
  3. getCause():j获得异常的原因

自定义异常对象

【修饰符】自定义异常类名 extends Exception<或其子类>

13.输入输出流

  字节输入输出流:InputStream、OutputStream

字符输入输出流:Reader、Writer

文件类:File

上面四个都是抽象类。

FileInputStream读操作:read(byte[] b.int off,int len)

FileOutputStream写操作:  write(byte[] b,int off,int len)

FileReader读操作: read(char[] c)

FileWriter写操作:write(char[] c)

InputStreamReader:是字节流通向字符流的桥梁,将字节输入流转换为字符流

OutputStreamWriter:是字节流通向字符流的桥梁,将字节输出流转为字符流

BufferedInputStream//字节输入缓冲流

BufferedOutputStream//字节输出缓冲流

BufferedReader//字符输入缓冲流

BufferedWriter//字符输出缓冲流

14.线程

Thread

启动线程调用:start()

执行线程调用:run()

线程休眠sleep(long l):参数是毫秒为单位,需要异常处理

线程生命周期中的四个状态:新建状态、就绪状态、运行状态、阻塞状态、死亡状态

线程同步:synchronized

同步方法

class 类名{

public synchronized 返回值 方法名(){

}

}

同步代码块

   Synchronized(obj){

}//当线程执行到同步代码块时,必须获取obj对象的锁才能执行同步代码块,否则线程只能等待获得锁

线程创建

方法一:通常继承创建线程

 public class TreadA  extends  Thread {

     Public void run(){

}

}

Class Test{

         Public static void main(String[] args){

        ThreadA  a = new ThreadA();

          a.start();

}

}

方法二:通过实现Runnable接口创建多线程

Class ThreadB implements Runnable{

                  Public void (){

        }

}

Class  Test{

         Public static void main(String[] args){

             Thread  t= new ThreadB();

         Thread  b = new Thread(t);

                           b.start();

}

}

15.JDBC

JDBC操作数据库的基本步骤及对应的代码

(1)装载数据库的驱动;Class.forName(“驱动器名称”)(

(2) 创建数据库的连接

Connection con = DriverManager.getConnect(“url”,”user”,“密码”);

(3)执行各种SQL语句

     Statement sta = con.createStatement();

     ResultSet rs =  sta.executeQuery(sql);

     sta.executeUpdate(sql);

(4)获取查询结果

     While(rs.next()){

      System.out.println(rs.getXXX(列号));  

}

(5)关闭创建的各个对象

           rs.close();

           sta.close();

         con.close();

掌握JDBC操作数据库的方法

DAO模式

DriverManager.getConnection()

Driver

Class.forName()

Connection

Statement

ResultSet

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值