l蓝杰暑假小结

              蓝杰 Java总结

一......继承、多态,重写
       1.继承
          【类的继承格式】   使用 extends 关键字来实现继承
                                                  class  父类{}
                                                  class 子类  extends 父类{}
        继承的好处: 使用继承可以直接调用父类中的非私有的属性和方法,而且根据需要子类还可以扩展自己的方法。
       注意: 在java中,只允许多层继承,不允许多重继承,即一个子类只能有一个父类,而多层继承是指一个子类可以有一个父类
,一个父类还可以有一个父类。
        2.重写
             所谓的方法的重写就是指子类定义了与父类中同名的方法,但是在方法重写时必须考虑到权限,即被子类重写的方法不能
拥有比父类更加严格耳朵访问权限。
         当方法被重写之后,子类对象调用的将是被重写后的方法。

      3.重载与重写的区别
               重载: 方法名称相同,参数的类型或个数不同  ,对权限没有要求,而且重载方法必须发生在同一个类中。
               重写:重写的方法名称,参数的类型和个数,返还值类型全部要想通,同时被重写的方法不能拥有更严格的访问权限,
方发的重写是发生在继承类中的。 

.二.....数据类型、值传递和引用传递有什么区别? String是什么传递?
    1.数据类型
     在java中数据类型分为两大类: 基本数据类型和引用数据类型
        基本数据类型:
             整数类型(byte.  short. int .   long)  浮点型(float.  double)     字符型(char)  布尔型(boolean)
            
             引用数据类型    :类    接口     数组

     2..值传递和引用传递

       值传递:适用于所有的基本数据类型(short,int,long,char,boolean,float,double,String)。
值传递的方法是将目标变量中的值拷贝一份,存入新的变量中,这样一个变量值就变成了两份;你对其中任何一份的值做修改,是
不会影响到另外一份变量的值。

引用传递:适用于所有的类类型(class),包括自定义的类;但是String除外。
引用传递的方式是将对象名中存储的对象实例地址,给改变了,但是对象本省是没有变化的
       String 传递为值传递

  三.......Set如何遍历,有哪些子类、List如何遍历,有哪些子类、Map如何遍历,有哪些子类
    Map中是否可以放入null的key或Vlaue?Set,List呢?
         首先 Set  Map     List    是集合框架中的三大接口
   
     1.Set的遍历:  首先创建一个Set集合对象     注意是接口 不能直接创建对象,所以必须用它的子类来创建对象  如:
java.util.HashSet<String> sSet = new java.util.HashSet<String>();
        然后用For循环往里面放入元素    如往集合中放入十个元素;然后再遍历集合 (首先要得到集合的迭代器
java.util.Iterator<String> iter=sSet.iterator();  然后如果有元素 则取一个元素)
      特别注意 用Set集合 取出的元素是不会有重复的
   Set接口常用的子类   java.util.HashSet      java.util.TreeSet  
  
    2.List的遍历
    因为List提供了有序的访问集合中的方法  get(int index)  :取得列表中指定位置的一个对象,所以遍历List集合时 只要用For 循环
语句既可以了  如  for(int i=0;i<list.size;i++){
                                   String s=list.get(i);}
    List接口常用的子类  java.util.Vector       java.util.ArrayList

   3   Map的遍历:
             由于Map中存放的是两种对象  一种称为 key键,一种称为value值,他们在Map中试一一对应的关系,而且在Map中  
key键不能重复(因为key值是用Set集合存放的),但是value 值可以重复
         在遍历时  先得到所有key的集合       java.util.Set()  set=um.keySet();
      然后通过集合的迭代器迭代key;再通过key的值得到value的值   value的值=um.get(key);
  
      Map接口常用的子类是  java.util.HashMap   和 java.util.Hashtable


   四.....Swing界面相关,Swing组件的继承体系图、事件监听器的继承体系图。
   五...... 递归与循环的区别?
       递归是指函数在运行中不断的调用自己的一中现象。递归并不是程序的流程结构,而是一种程序设计的一种思路和实现方式。
而且递归不是一种算法,只是实现一种算法的思想。递归可以简化代码的思维强度,缩短代码,因此在很多语言中都有应用。
不同点
          1..从程序上看,递归表现为自己调用自己,循环则没有这样的形式。

           2,递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题

是逆向的。循环是从简单问题出发,一步步的向前发展,最终求得问题。是正向的。

              3,递归中,问题的n要求是计算之前就知道的,而循环可以在计算中确定,不要求计算前就知道n。

             4,一般来说,循环的效率高于递归(当然是循环可以计算的情况下)

  由于一切递归问题都可以转化为循环求解,因此我们可以定义广义递归:

六..... .I/O流继承体系结构图和分类。文件复制的实现,原始数据类型读写

          
七.....线程:线程有几种创建方式?线程在程序中有几种状态?
 
   1.创建一个线程有两种方式:其一是继承thread类并重载run方法;其二是实现runnable接口。
实现Runnable方法更为灵活——完全不用复制代码,也不需要破坏原有的结构,因此,一般情况下都使用第二种方法创建线程


   2...在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。

第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态;

第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当
前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态

第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码


第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。
sleep,suspend等方法都可以导致线程阻塞。

第五是死亡状态。如果一个线程的run方法执行结束,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪
状态


八。。。。.static用法与注意事项,==和equals的区别?

       1,  ==与equals的用法区别比较

  在JAVA中,==与equals都有比较判断对象是否相等的作用,但具体用法却并不相同.==是运算符号,而equals则属于方法.

  当==两边的对象属于基本类型时,==的作用仅是比较对象的值是否相等,如果相等返回true,否则返回false;当两边的对象属于引用数据类型时,==的作用是判断对象的内存地址是否一致,如果同时指向同一地址,则返回true,否则返回false.

  equals两边对象只能属于引用数据类型,因为equals是方法,所以它是如何具体判断对象是否相等是根据程序而定的,equals是属于object类,默认是判断内存地址是否相同,但在object的子类中可以重写equals方法,如在String类中只是比较对象内容是否一致,一致则返回true,否则返回false

2,  static的用法

  使用static的方法叫做静态方法或者类方法,调用static方法时可以直接用到类名调用,调用形式如类名.静态方法,而非static方法必须通过创建对象才能调用。

  同样,static的属性也可以直接调用,static属性可以在static方法中的任意子方法中调用,而非static属性则不可以,必须通过创建对象才能调用。但调用static属性时也要注意,因为static属性属于类属性,因此当某一个对象的static属性改变时,此类中所有的static属性都会改变。

  静态方法(属性)不能直接调用非静态方法(属性),静态方法可以被重写和继承,但若类前面有 final,则不能被其他类继承。接口中的属性(前面带有 final)在子类中的指向不能改变,但值可以改变。

类方法与对象方法

  其他类调用有父类的子类时,如果父类(UserInfo)是静态的,则调用子类(Info)重写过的方法(study())时,其实调用的还是父类中的方法,如果父类是非静态的,则调用的是子类中的方法。调用父类中的方法可用 super

public static void main(String[] args){

  UserInfo if = new Info();

  if.study();

}

创建子类对象时,会首先创建父类中的对象,然后再创建子类对象

  总之,static应慎用!

完成的项目功能说明和缺陷分析。(画板、五子棋、弹球游戏3选2)
   五子棋
     实现的功能:能够在一个窗体中通过菜单命令打开一个五子棋游戏的界面,然后再弹出的五子棋窗口中,可以实现简单的五子棋人及对战游戏。
缺陷分析:窗体界面太单一,毫无美感,同时在人机对战时由于机器是随机的落子,并没有认为的给它添加一些算法,所以游戏毫无可玩性。另外,还没有给游戏添加开始暂停等功能

弹球:
实现的功能:能够通过开始,暂停等命令来控制弹球游戏的进程;同时运用多线程实现了挡板和小球两个线程的同时进行。

缺陷分析:界面单一,粗糙,游戏的难度没法改变


       
      
  
     
       


   

    
   



               

你可能感兴趣的:(多线程,数据结构,游戏,算法,swing)