Java_05

来源:互联网 发布:如何做网站推广优化 编辑:程序博客网 时间:2024/05/24 05:13

 方法:

   方法是一段可以重复调用的代码段,自定义的方法不调用不会允许

  作用:提高代码的复用率

  格式: public static  返回值类型  方法名称(参数列表){方法体}

  重载:overload 方法名相同,参数类型个数不一样

  重写:override 继承,方法名相同,参数相同


字符串:String StringBuffer StringBuilder

  字符串看作是字符序列

  创建之后不会再做修改和变动的字符串常量 String类,线程安全

  创建之后允许再做更改和变化的字符串常量 StringBuffer类(有同步锁,线程安全) StringBuilder类(线程不安全)

  StringBuffer StringBuilder都继承自AbstractStringBuilder类


面向对象

 对象和类:

  对象是类的一个实例,有状态和行为

  类是一个模板,它描述一类对象的行为和状态


 类的设计

  访问修饰符 class 类名{}

  访问修饰符可以是public或不写  文件名和piblic修饰的类名相同 一个文件中最多有一个public修饰的类


 面向对象的三大特征:封装性,继承,多态

  封装:把对象的属性和行为结合成一个独立的单位,外界不能直接访问或修饰这些数据和代码,只能通过对象提供的接口函数来改变或者获取对象的属性数据

  继承:从已有的类中派生出新的类,前一个类称为父类,新产生的类称为子类,体现了类的扩展性

  多态:不同类的对象,可调用同一个方法,实现不同功能(重载),提高代码的复用性,提高程序设计的灵活性和效率


 构造方法

  访问修饰符 方法名称(参数列表){方法体}

  构造函数名称和类名称相同

  构造函数没有返回类型

  其任务是在创建对象时初始化其内部状态

  若没有定义,系统默认有一个无参构造方法,若自己定义则默认构造方法自动消失

  构造方法可以有很多个,必须名字相同参数列表不同(参数类型不同,或者参数个数不同)


 this的使用

   this是调用此方法的那个对象,谁调用指向谁(当前对象)


 static的使用

 静态的,可以修饰成员变量和成员方法

  1.static修饰成员变量:

      该类所有对象所共享的数据,在对象创建之前就已经存在

      可以通过类名调用

      定义公共静态常量

  2.static修饰成员方法(类方法)

     静态的方法中只能访问静态的成员,不能访问非静态的成员

     静态的方法可以通过类名来调用,所有称为类成员

     非静态的方法可以访问静态的成员和非静态的成员


 初始化和清理

   1.垃圾回收  finalize()

        Java提供了自动垃圾回收机制

       垃圾回收前,finalize()方法会被调用

       垃圾回收的实机是在JVM空闲的时候或者垃圾快满的时候

       System.gc()作用:提高来清理垃圾的概率,但不一定会来清理


   初始化顺序:

      先静态后非静态:先初始化静态的成员变量后初始化非静态的成员变量,静态成员只初始化一次

      先声明后属性:    每个成员变量声明时获得默认值,然后执行等号后面的赋值

      先属性后方法:    先执行定义属性的初始化,然后执行构造方法的初始化

      先父类后子类:    先初始化父类的成员变量,然后初始化子类的成员变量

 

   final的使用

     final可以修饰变量,类,方法

     final修饰的变量为常量,只能赋值一次

     final修饰的方法不能被重写

     final修饰的类不能被继承


继承

  作用:体现类的继承关系,提高了代码的复用率

  Java语言支持单继承机制,如果一个类没有使用extends,默认继承java.lang.Object类

  子类:继承得到的类叫做子类,子类可以作为父类的状态和行为,还可以修改父类的状态或重写父类的行为,并且添加新的状态和行为

  父类:被继承的类叫做父类,父类包括所有直接和间接被继承的类

    结构模式: public class 子类类名 extends 父类类名{方法体}


 Object类

  object类是类层次结构的根,java中所有的类从根本上都继承自这个类

  object类是Java中唯一没有父类的类

 

 方法的重写:

    子类可以重写父类的行为,定义了和父类相同的方法,父类的方法被重写,要求方法名相同,参数相同,返回值类型相同,访问权限不能缩小,可以通过super.成员方法调用父类被重写的方法


 多态:

  定义:不同的类对象接收同一个消息产生完全不同的相应

  实现条件:继承/重写/父类应用,子类实例/通过父类引用调用被重写过的方法


 动态绑定机制:

  1.编译时检查声明的类中是否有该方法

   2.运行时发现引用实际指向的对象的类型,到实际类型中找方法运行,如果找不到,到该类的父类中找方法运行

   ---属性看声明,方法看对象


接口和内部类

  结构:public interface 接口名称{}

   接口中的成员变量均为public static final的

   接口中的方法均为公共抽象的,public abstract,abstract修饰的方法没有方法体

   接口可以声明引用变量,但不能直接new创建对象

  类实现接口使用implements关键字,然后创建实现类的对象

  类实现接口是多实现的,implements接多个接口名称,之间用,隔开

   如:class 类名 implements 接口1,接口2.。。{ }   类中要为所有接口的抽象方法提供具体实现

   接口的作用:是合约,扩展类的功能

   接口的使用:使用interface定义,多继承,类可以实现多个接口,多态

   抽象类:可以有抽象方法(但不是一定要有)

         抽象类可以继承具体类

         final和abstract不能同时使用

   内部类:

       使用的场合:

         1.针对接口或抽象类这些不能直接new创建对象的数据类型,使用匿名内部类创建对象

         2.完成复杂的功能,设计辅助外部类的类,并不想把类的细节公布出来,可以使用内部类

            内部类的好处:可以共享外部类的数据包括私有的

       ps:局部内部类可以访问外部类中的静态成员和非静态成员,包括private修饰的,可以访问局部常量(final修饰的),不能访问局部变量(jdk1.7)

         pss:静态内部类只能访问静态成员,创建静态内部类对象可以通过外部类类名

                   非静态内部类可以访问外部类的静态成员和非静态成员,包括private修饰的,创建非静态内部类对象依赖于外部类对象


异常:

   异常和错误:

    程序中的问题分为两类:

       Error类:错误,JVM虚拟机生成并抛出的,程序员不需要处理

       Exception类: 异常,程序中的问题,需要我们程序员处理

       Throwable类是程序中所有问题的超类

             异常分为两类:

                 1.运行期异常:程序运行时可能产生的异常,可以处理,也可以不处理,如果程序员不处理,交给系统默认的异常处理程序处理,但这样会导致程序中断,所以最好还是先处理

                 2.编译期异常:编译时表现为语法错误,必须处理,否则编译通不过

              ----RuntimeException类是所有运行期异常的超类

                   Exception类是所有异常的超类


             异常处理的两种方式:

                 1.通过try  catch 语句捕获异常

                 2.声明异常,将异常交给调用自己的方法处理,通过throws关键字将异常抛出,可以抛出多个异常,异常类名中间用,隔开


         解答题?finally,final,finalize()的区别

             finally 不管异常是否发生都会执行的代码,除非JVM退出

             final 用于声明属性,方法,类,分别表示属性不可变,方法不可覆盖,类不可继承

             finalize()是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时其他资源回收


            throw和throws的区别?

               throw是语句抛出一个异常?/throws是方法可能抛出异常的声明


   RTTI:

      获取Class对象的3中方式:

            1.通过对象.getClass()方法

            2.通过Class类中的静态的forName(参数)方法

            3.通过类名.class字面量


 集合类库:

   Collection接口的子接口:List ,Set

       特点:    

              List列表:存放的是有序的,可以重复的元素

              Set集:存放的是无序的,不可重复的元素

              Map映射:存放的是具有映射关系的键值对,键映射到值,键必须是唯一的


  相关笔试题?

     1.Java集合中哪些类是线程安全的?

          Vector:具有同步化机制

          statck:堆栈类,先进先出

          hashtable:比hashmap多了个线程安全

          枚举,StringBuffer


      2.Java中Collection和Collections的区别?

         Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法

         Collections是一个包装类,工具类,提供静态多态方法

 

     3.list,set,map三者的区别?

        list,set都是单列集合,有一个共同的父类接口--collection;list是存放有序元素,可重复,set是存放无序元素,不可重复;map是一个双列的集合,存储的数据是无序的,其键(key)不能重复,其值(value)是可以重复的


    4.ArrayList和LinkList的区别?

           1)ArrayList是实现了基于动态数组的数据结构,LinkList是基于链表的数据结构

           2)对于随机访问get和set,ArrayList优于LinkList

           3)对于新增和删除操作add和remove,LinkList比ArryList更好


    5.HashMap和Hashtable的区别?

          1)HashMap 是线程不同步的,不是线程安全的,可以接受null的键值(key)和值(value);Hashtable是线程同步的,线程安全的,但不接受null为键值和值

          2)HashMap的迭代器是fail-fast迭代器,Hashtable不是

          3)HashMap的性能要好于Hashtable,因为不是线程安全的


 数据库原理:(初级)

     增加:insert into

     删除:delete from

     更改:update set

     查询:select  from

  

    函数:

        分组条件 group by+列名

        分组筛选?group by+列名 having+条件

         排序  order by

        多表查询:

            内连接:select   显示的数据列  from  左表  inner join  右表  on 左表.对等列=右表.对等列 where 筛选条件 group by 分组条件  having 分组筛选条件  order by 排序条件

            左连接:select   显示的数据列  from  左表  left  join  右表  on 左表.对等列=右表.对等列 where 筛选条件 group by 分组条件  having 分组筛选条件  order by 排序条件

            右连接:select   显示的数据列  from  左表  right  join  右表  on 左表.对等列=右表.对等列 where 筛选条件 group by 分组条件  having 分组筛选条件  order by 排序条件


 JDBC

    作用:Java程序和数据之间的一座桥梁

    步骤:

           1)加载数据库驱动

           2)连接数据库

           3)执行sql语句

           4)获取数据

           5)关闭数据库

    四大物件以及作用:

      DriverManager类,管理一组数据库驱动

      Connection对象是确定与数据库的连接,其对象由DriverManager产生

      Statemenet对象负责发送sql语句到数据库执行,由conn对象产生

      ResultSet对象存放查询返回的结果集


   Satatment和PreparesStatement的区别?

     p*是预编译,s不是

   批量处理?

      Satatment和PreparesStatement都支持批量处理,在循环中,预编译的效率较高,因为只需要编译一次


    事务处理:设置数据库操作命令提交模式改为手动提交;

         概念:将多个操作事件整合到一起,要么一起成功,要么一起失败

         特点:原子性,隔离性,统一性,持久性


 IO流:

    字节流:

        输入流:InputStream   FileInputStream  BufferdInputStream  DataInputStream

        输出流:OutPutStream  FileOutputStream  BufferdOutputStream  DataOunputStream

    字符流:

       输入流:BufferedReader  InputSreamReader  FileReader

       输出流:BufferedWriter     OutputStreamWriter  FileWriter

    缓冲流/包装流:

       字节流缓冲流: BufferedInputStream  BufferedOunputStream

       字符流缓冲流:BufferedReader  BufferedWriter

    对象流/转换流/打印流 printStream


  xml

     作用:存储和传输数据

     xml解析思路:通过内存中的文档树Document对象


 多线程:

    1.进程,线程,多线程

         进程:进行中的应用程序,进行是由线程组成的,至少要有一个线程

         线程:进程的组成者,cpu执行程序的最小单元

         多线程:程序中有多个代码片段同时运行,一个cpu同一时刻只会运行一个线程,实际上cpu是在多个线程之间快速切换,切换的速度非常快,以至于我们肉眼分辨不出来,认为它们是同时运行的

  

     多线程的特点:随机性

     2.创建线程的两种方式:

        1)继承Thread类

         2)实现Runnable接口


     3.线程的安全性问题?

        多个线程共享一个进程的内部空间,多个线程对同一数据可能产生并发的访问,不采取任何处理的话可能导致数据错误或者不一致等情况

        解决方案:使用同步

        多线程同步的方法?

         1)同步方法 synchronized  2)同步代码块 3)使用volatile实现线程同步 4)阻塞队列实现线程同步5)使用重入锁实现同步

 

      4.死锁?两个或者两个线程相互等待造成死锁

         如何避免?1)尽量减少同步嵌套2)合理安排同步的顺序

      5线程之间的通讯?使用wait() ,notify(),notifyAll()

原创粉丝点击