ORACLE WDP BD 1802 day 11

面向过程:C,Basic,Pascal
        核心思想: 自顶向下,逐步细分,模块化
        程序的基本单元:函数
            针对于函数来说:会接收一些数据,进行处理,然后再输出
                                         一些数据。
                               主函数
              函数1       
                         函数2     函数3
           如:吃(猪八戒,西瓜)
面向对象:C++,java,C#...相对面向过程,简单,好学。
        核心思想:使用类,对象,继承,封装,消息,动态绑定,静态绑定等进行程序设计
        程序的基本单元:类
   
        如:
              首先:设计猪妖类型,
              然后: 实例化一个猪妖
              其次: 初始化信息
              使用: 猪八戒.吃(西瓜)
抽象数据类型:用不同类型的数据的组合来描述一种新的事物。
      如:描述人类
                    String   姓名
                    int      年龄
                    char     性别
                    double   weight
                    String[]  爱好
       
类:用来定义一种抽象数据类型 
              定义上述描述的新的事物
      public class Person{
        //成员变量
        String name;
        int age;
        char gender;
        ....
        /*方法
          1:可以定义这种类型的一些共同行为
          2:可以使用这些方法来操作成员变量
        */
      }       
对象:是类产生的个体,即类的实例化            
          在程序的逻辑中被使用。
    
          如何实例化和初始化?
         new 构造方法(有参传参)
null与NullPointerException
    null:是引用类型的默认值
    NullPointerException:是程序在运行时产生的一种异常
                    如何产生的?? 
                    当引用变量没有指向任何对象时,
                    调用了类型中的成员变量或者方法
          reg:
             Person p = null;
             p.eat("面包");
             p.name = "张三";
引用变量:简称引用,
      存储的是堆中对象的地址信息,我们可以理解为变量
      指向了堆中的对象
方法   
 1、方法签名: 方法名+参数列表
    2、方法重载:
        在同一个类型中,方法名相同,参数列表不同,
        即方法的重载
    3、定义语法:
             修饰词   返回值类型   方法名(....){
      
       }
    4、调用语法:
                    没有static修饰的方法
                    必须使用引用.方法(有参传参);      
    
构造方法:
      作用:用来初始化对象的成员变量
      定义语法: 修饰词  类名(...){}
      调用语法: new 构造方法();  
   
      无参构造器:没有定义构造器时,系统会默认提供无参构造器
  
      注意:只要定义了构造器,系统不再提供默认构造器
     
成员变量与局部变量的区别:
    成员变量
        定义位置:在方法外,类体中
        默认值:有默认值,构造器中可以不对成员变量初始化
        内存位置:在堆中
        生命周期:从对象实例化开始出现,到对象消失   
    局部变量
        定义位置:在方法内(包含小括号内的形参)     
        默认值: 没有默认值,必须初始化再使用  
        内存位置:在栈帧中
        生命周期:从声明时开始,到方法结束后,栈帧消失时。
 
内存管理:
    jvm将内存分成三大主要区域,堆,栈,方法区,用来存储数据。
   
    堆(heap): 存储new出来的对象,给成员变量分配空间       
    栈(stack):jvm在执行程序时,在栈中,会为每一个方法分配一
      个空间(即栈帧),用来存储方法的局部变量。
     方法区:  用来存储jvm加载的字节码文件的信息(类的信息)
         包含类的方法,方法只有一份,堆中的对象共享
         这份方法,在使用非static修饰的方法时,需要
         对象来调用(即动态绑定到对象上) 
垃圾回收机制:(GC)
     jvm的一个独有线程(程序),用于回收没有任何引用指
           向的对象。
    
     System.out.println((new Person()).name);
          上述产生的对象,以后再也无法使用,如果类似的这样情况
         有很多,对象来不及被处理,内存剩余空间就会越来越小,
         有可能出现内存溢出情况。
    
         因此需要一个处理机制,即垃圾回收机制。没有被引用的对象
         会被视为垃圾,等待GC被回收
     (因为有垃圾绘制机制,所有java程序猿无需单向内存
          溢出或泄露情况)
================================================
this关键字:
      在普通方法或构造器中,操作的成员变量如果与局部变量名称相同时,
      为了避免出现歧义,应该在成员变量前使用this.进行区分
      当没有歧义时,this.可以省略不写       
 
     在构造器中:还可以使用this关键字调用本类中的其他构造方法 
      语法格式: this(有参传参)
      只能在构造器中的首行首句上使用
==============================================
经典俄罗斯方块游戏:

  画面最多能放入20行,10列的方块
    画面中的最小单元:
         是一个小方块
    
    
     设计需求分析: 最多有200个方块,这些方块有共同特征
                               有共同行为   
                              
          最小单元: Cell来定义方块这种事物
              
                             成员变量: 行号row,列号col
                             方法:   drop()
                      left()
                      rigth()
                             重载上述三个方法,通过形参决定移动的步数    
                            
                      toString(); 
===========================================
数组:
    基本数据类型数组,元素是基本类型的数据。
 
    引用数据类型数组,元素是对象      

     初始化的方法:
      静态初始化:
                 元素类型[] 变量名  = {}
                 动态初始化:
                  (1)规定长度的
                  
                  (2)不规定长度的
  
 引用数据类型的数组使用规定长度的方式进行初始化时,
 默认值是null;
 如:
    Cell[]  cs = new Cell[10];
   
    cs里有地址,数组对象的地址。此对象里有10个null。
   
        第一个元素存储(0,3)的方格
    cs[0] = new Cell(0,3);
        第二个元素存储(0,4)的方法
    cs[1] = new Cell(0,4);
   
   
PS:引用类型的数组对象内,存储的是元素对象的地址信息   
   
===================================================
比最小单元大点的
   游戏中有很多T对象,我们可以抽象出来一种T类型
    所有的T对象的共同特征:
               四个方格
  所有的T对象的共同行为:
        向左   moveLeft()
        向右   moveRight()
        向下   moveDrop()
 重载 上述三个方法
    toString()
           public class  T{
             Cell[] cs;
             public T(){
              cs = new Cell[4];
              ...
             }
          
           }  
   

  
   格式自动对齐快捷键:ctrl+shift+f           
                             
  

                    
                                                    
                                        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值