初级阶段java技术总结

一. 继承、多态、重写
1.继承的语法格式
public class 子类名  extends  父类名 {
}
java中的继承是单继承。


 ① 子类和父类在不同包的情况下:
公有的方法和属性可以被子类继承。
私有的、默认的、受保护的方法和属性不能被子类继承。
构造函数是不能被子类继承的。
 ② 子类和父类在同包的情况下:
公有的、默认的、受保护的方法和属性能被子类继承。
私有的方法和属性不能被子类继承。
构造函数是不能被子类继承的。


3.方法的重写:子类要有不同的表现(实现)重写父类中在方法.在调用方法的时候,会优先执行子类的方法,

   如果子类没有该方法,就调用父类的方法。


4.自动转型(向上转型) 一般格式: 父类名  对象名  =  new  子类构造函数名();
  该对象名不能调用子类新定义的方法。

 

5.多态:因为对象有不同的表现形式,同一个方法会有多种形式,继承后还有有不同的方法,这种情况就叫多态。


二. 数据类型、值传递和引用传递有什么区别,String是什么传递?
1. 数据类型
①逻辑类型:关键字 Boolean  常量 true 、false
②整数类型:int 、byte 、char 、float 、double


2. 值传递
适用于Java的基本数据类型(原始数据类型), byte,char, short,int, long,float,double,boolean并且还包括了String类型。
值传递只是将变量的值拷贝一份存入到新的变量中,这样就形成了两个不同的变量,对其的一个做修改对另外一个是没有影响的。


3. 引用传递
适用于Java的类类型,只要是使用class定义的类都属于类类型,String除外。
引用传递只是将对象名A中的地址,拷贝一份存入到对象名B中,这样两个对象名所指向的地址就完全相同,对象名A改变对象的数据,那么B在使用数据的时候就已经被修改了。


4. String是值传递


三. Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类?Map中是否可以放入null的key或Vlaue?Set,List呢?
1、Set是最简单的一种集合,它的对象不按特定方式排序,只是把对象加入集合。 具有无序性和不重复性(不同计算机操作的结果可能不同,但同一计算机多次操作结构是相同的)。
set的常用具体实现类:HashSet和TreeSet。可以通过使用迭代器输出所有的元素。
set的主要方法:
① boolean add(E e)  如果set中没有指定元素,则添加该元素
② void clear() 移除此 set 中的所有元素
③  boolean contains(Object o) 如果 set 包含指定的元素,则返回 true
④ boolean equals(Object o) 比较指定对象与此 set 的相等性。
⑤boolean remove(Object o) 如果 set 中存在指定的元素,则将其移除
⑥int size() 返回 set 中的元素数

2 、list:具有线性,有序性,重复性,可以通过迭代器遍历数组。

   常用实现类:Vector,ArrayList.
   list的几种重要方法:
① boolean add(E e) 向列表的尾部添加指定的元素
② void add(int index, E element)在列表的指定位置插入指定元素。
③ void clear() 从列表中移除所有元素(可选操作)。此调用返回后该列表将是空的。
④  boolean contains(Object o) 如果列表包含指定的元素,则返回 true。
⑤  boolean equals(Object o) 比较指定的对象与列表是否相等。
⑥  get(int index) 返回列表中指定位置的元素。
⑦ int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
⑧  remove(int index) 移除列表中指定位置的元素
⑨ set(int index, E element) 用指定元素替换列表中指定位置的元素
⑩  int size() 返回列表中的元素数。


3 、map:map提供的是一种映射关系的集合数据结构存放两种对象,一种是key(键),一种是value(值)。它们是一对一的关系。
   map中值可以重复,键不可以重复。可以迭代器输出所有元素

   常用实现类:HashMap、Hashtable
   map中的几种重要方法:
   ①  boolean equals(Object o) 比较指定的对象与此映射是否相等。
   ② get(Object key) 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回
null。
   ③  remove(Object key) 删除键的映射关系,直接删除键。

四. Swing界面相关,Swing组件的继承体系图、事件监听器的继承体系图。
1.Swing组件的继承体系图:


初级阶段java技术总结_第1张图片
 


 2.事件监听器的继承体系图:


初级阶段java技术总结_第2张图片
 
 
五. 递归与循环的区别?
递归算法与循环算法的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。

不同点:
1,从程序上看,递归表现为自己调用自己,递推则没有这样的形式。
2,递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题是逆向的。递推是从简单问题出发,一步步的向前发展,最终求得问题。是正向的。
3,递归中,问题的n要求是计算之前就知道的,而递推可以在计算中确定,不要求计算前就知道n。
4,一般来说,递推的效率高于递归(当然是递推可以计算的情况下)

六. 异常体系:异常分类。throws、throw、Throable、Exception的区别?运行时异常、编译时检测异常和Error的区别,哪些异常是Error?
throw用来抛出异常,throw语句需要一个参数:一个throwable的对象. throw 是把新建的异常对象抛给调用者,
throws用来指定方法能够抛出的异常. 是把已经存在的异常抛给调用者去处理。
Throwable是Exception和Error的父类.

Error表示错误,一般是系统级的错误!
Exception一般是程序运行期间的错误!异常的父类。 
  
七. I/O流继承体系结构图和分类。文件复制的实现,原始数据类型读写

  字节流--------------继承体系图

初级阶段java技术总结_第3张图片
 
 

  字符流------------继承体系图


初级阶段java技术总结_第4张图片

流按方向分为:输入流(InputStream)和输出流(OutputStream):程序可以使用输入流对象从数据源读取数据,使用输出流对象向目的地写出数据,对应的流类名中一般有Input和Output词;


按性质可以分为:

基础字节流(原始流):InputStream和OutputStream是java中可以按最小数据单位读取的流,即每次读写一个字节,基础流是直接连结到输入源的流。

过滤流(节点流):过滤流是用来包装基础流以提供更好的特性,如提供缓冲功能的BufferedInputStream和BufferedOutputStream;过滤流是用来包装基础流或其它流(以其它流对象为构造参数)---它并不直接连结到数据源。
基与具体数据类型的流:如果要从流中读取指定的数据类型的数据,如int,long型的数值,则要使用DataInput/DataOutput接口的子类如DataInputStream和DataOutputStream;
基与对象读写:对象的输入输出流,即ObjectInput/ObjectOutput接口的子类,如我们使用ObjectOutputstream将一个java对象写入到文件中;对象流的读取就是常说的java对象序列化技术。

八、线程:线程有几种创建方式?线程在程序中有几种状态?线程的监听模型

1 继承Thread类实现线程: 重写Thread类的run()方法,在run()方法中编写你的线程要实现的调用,然后创建该子类的实例,调用其start()方法启动线程;

2.实现Runnable接口创建线程:定义一个实现Runnable接口的类,实现它的run()方法,然后将这个类的实例作为

Thread的构造方法的参数,创建Thread类的实例,即可做为线程启动。查看Thread类的说明就会发现,它也是实现了Runnable接口的类,

3 以内部类的方式创建线程:创建线程的第三种方法是以匿名内部类的方式创建,即可以在一个方法中创建线程,当方法被调用时,线程即启动,这在编写一些简单线程应用时十分方便,如swing事件中处理一个可能时间较长的任务,使用这种方法就不致与阻塞用户界面的操作。

4 继承TimerTask类实现线程的定时执行:使用多线程的还有可能是因为程序中要定时执行某些任务而又不能暂停当前的工作,比如定时发送邮件、定时分析web服务器上的访问日志;JDK为这样的功能实现提供了两个类,一个是可做为一个独立线程对象运行的实现了Runnable接口的java.util.TimerTask类;另外一个是调度TimerTask对象定时运行的java.util.Timer类。

 

线程有就绪、阻塞、运行三种基本状态。

 

在做弹球时,用到了监听,用一个线程实现监听

 

线程的启动是通过调用线程对象的start()方法启动,线程运行是从线程对象的run()方法开始,当run()方法结束后,线程对象运行结束。

 
九. final,public,protected,private的用法.static用法与注意事项,==和equals的区别
级别:public protected  友好 的  private

1.public
  ①  public限定的类在一个文件中只能有一个,且类名必须与文件名相同。
  ②  修饰方法,表示方法可以被其它包中的类调用
  ③  修饰属性,  可以直接用    对象.属性    格式来访问属性
  ④  interface 中的方法和属性默认为  public 型


2. protected :可以修饰属性和方法,用protected 修饰的方法可以被子类继承,在同一个包中可以访问用protected 修饰的方法和属性,在 不同包中不可以访问。


3. private : private 方法和属性只能由类内部的方法和构造器调用


4. final
①  修饰属性时,该属性的值是常量,不可以改变。
②  修饰方法时,子类继承时,该方法不可以重写。所有常用来保护父类中不允许子类重写但又要标记为public 要外界调用的方法。
③  final类不能被继承,既不能有子类
被final 修饰的变量就成了常量,其值不可以被改变
final 修饰在类不能被继承
final 修饰的方法,子类不可以重写


5 static
①  static 方法称类方法,直接使用类名调用,而非 static 方法的调用必须通过创建该类的对象调用
②  static 属性称类属性,可以不创建类的对象直接调用
③  类的某一个对象的static属性值改变后,类中所有的对象的static属性值都会改变。
使用类名直接调用静态方法
用类名创建的对象调用非静态的方法
静态方法中不能操作非静态属性或方法
静态中不能使用  this ,super
④ 定义代码块
⑤  静态方法中不能使用非静态的属性和方法,也不能使用this,super
⑥  编译时,先装载static 属性和方法,再运行主函数


6. ==和equals
equals 方法是String类从它的超类Object中继承来的。被用来检测两个对象的内容是否相等。equals 方法不能用在基本类型中,只能用在引用类型里。
==是运算符,用于比较引用和比较基本数据类型时具有不同的功能。比较基本数据类型,如果两个值相同,则结果为true;比较对象时如String,用==是比较两个变量是否指向同一个对象,而用equals才是比较两个String的内容是否相等。


十. 链表、队列、栈
1 链表是一种物理存储单元上非连续、非顺序的存储结构。链表有一系列的结点组成,结点可以在运行是动态生成。每一个结点包括两个部分:存储数据的数据域和存储下一个结点的指针域。在链表中实现数据的插入和删除比比队列和栈方便。

2. 队列 :是一个容器,用来存储同一类型的数据容器。这容器是可以变大小的。数据是“先进先出”的,最基本的使用是能够实现数据的查找、插入、删除、合并、排序、统计以及简单计算等操作。


3. 栈:是一个容器,“先进后出”。可以对数据进行排序,实现中缀表达式转换为后缀表达式。

 

你可能感兴趣的:(java)