zoukankan      html  css  js  c++  java
  • java

        java - 第一阶段总结    

        递归    

    递归:能不用就不用,因为效率极低

    package over;
    //递归
    public class Fi {
        public static void main(String[] args) {
            int num = f(7);
            System.out.println(num);
        }
        public static int f(int n){
            if(n==1 || n==2){
                return 1;
            }else{
                return f(n-1)+f(n-2);
            }
        }
        /*
         * f7=f6(8)+f5(5)---------------------13
         *    f6=f5(5)+f4(3)------------------8
         *       f5=f4(3)+f3(2)---------------5
         *          f4=f3(2)+f2(1)------------3
         *             f3=f2(1)+f1(1)---------2
         *                f2------------------1
         *                f1------------------1
         */
    }

    不借助于第3个数,来交换两个数

    package test.tang;
    
    public class Test {
        public static void main(String[] args) {
            //------只适用于数字类型(整数类型),小数结果不准确
            int a=5,b=8;
            a = a+b; //a=13
            b = a-b; //b=5
            a = a-b; //a=8
            System.out.println("a="+a);
            System.out.println("b="+b);
        }
    }

    关于a++, ++a 的循环

            /*
             * 练习:
             * 1.声明整型变量a并赋值为0
             *     a=a++,输出a的值-------0
             * 2.声明整型变量b并赋值为0
             *     b=++b,输出b的值-------1
             * 3.声明整型变量c并赋值为0
             *     for(int i=1;i<=100;i++){
             *       c=c++;
             *     }
             *     System.out.println(c);
             * 4.声明整型变量d并赋值为0
             *     for(int i=1;i<=100;i++){
             *       d=++d;
             *     }
             *     System.out.println(d);
             */
            
            /*
            int a = 0;
            //1.记录++a的值1
            //2.a自增1变为1
            //3.将记录++a的值1赋值给a
            a = ++a;
            System.out.println(a);
            */
            
            /*
            int a = 0;
            //1.记录了a++的值0
            //2.a自增1变为1
            //3.将记录a++的值0赋值给a
            a = a++;
            System.out.println(a);
            */
            
            /*
            int a = 0;
            for(int i=1;i<=100;i++){
                a=++a;
            }
            System.out.println(a);
            */
            /*
             * a=++a;
             *     a=0
             * i=1 a=1
             * i=2 a=2
             * i=3 a=3
             * i=4 a=4
             * ...
             * i=100 a=100
             */
            
            /*
             * a=a++;
             *     a=0
             * i=1 a=0
             * i=2 a=0
             * i=3 a=0
             * i=4 a=0
             * ...
             * i=100 a=0
             */

    注意的地方:

    short s = 5;
    s += 10; //系统自动帮助咱们做了强制类型转换
    //s = s+10; //编译错误,必须自己强转
    

    面向对象的设计思想:

    1)对象、类:
      1.1)数据的封装--成员变量
      1.2)方法(操作数据)的封装


    2.构造方法:给数据(成员变量)赋初值
      实例方法:操作对象的数据---与对象有关
      静态方法:操作参数的数据---与对象无关
      抽象方法:方法体没法写-----只能父类/接口中


    3.继承:
      1)作用:代码复用
      2)很多类中有重复的代码时,设计父类来继承
        2.1)普通父类:没有抽象方法时
        2.2)抽象类:有抽象方法时
        2.3)接口:完全抽象方法时


    4.设计规则:
      1)将公共的属性和行为,抽象到父类中
      2)所有子类方法的实现都一样-----普通方法
        所有子类方法的实现都不一样---抽象方法
      3)所有子类共有的,抽到父类中
        部分子类共有的,抽到接口中
        符合既是也是时,使用接口
        接口是对继承的单根性的扩展

    1.何时需要Debug? 

      程序的运行结果,与你的预期结果不同时
      Debug的目的是找错误,而不是改错误


    2.最早期调试就是打桩:
      System.out.println(???);


    3.Debug调试步骤:
      1)先添加断点
      2)以调试模式来运行程序
      3)F5:单步调试(会进到方法中)
        F6:逐方法调试(不进到方法中)
        F7:结束方法的调试
        F8:直接跳到下一个断点
           若后面没有断点了则结束调试


      4.看变量
        添加监视

    在记事本中自己顺Shoot游戏中的类的结构

        FlyingObject,Enemy,Award,
        Airplane,Bee,Bullet,Hero
        
        
    abstract class FlyingObject{
      image,width,height,x,y
      abstract void step(){}
      abstract boolean outOfBounds(){}
      
    }
    interface Enemy{
      int getScore();
    }
    interface Award{
      int getType();
    }
    class Airplane extends FlyingObject implements Enemy{
      speed
      Airplane(){}
      boolean shootBy(){}
    }
    class Bee extends FlyingObject implements Award{
      xSpeed,ySpeed,awardType
      Bee(){}
      boolean shootBy(){}
    }
    class Bullet extends FlyingObject{
      speed
      Bullet(){}
    }
    class Hero extends FlyingObject{
      life,doubleFire,images,index
      Hero(){}
      Bullet[] shoot(){}
      boolean hit(){}
    }
  • 相关阅读:
    git commit之后,想撤销commit
    centOS7下ifconfig提示command not found
    图数据库 — neo4j (二)
    XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
    SQL存储过程-新增和修改,参数Xml数据类型
    项目管理软件之易度1.5,禅道2.0,redmine1.2(附redmine1.2的安装)
    测试性能工具
    存储过程
    人生三支点:健康,职业,自由
    生活网站推荐
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/6209508.html
Copyright © 2011-2022 走看看