day03~递归;面向对象

递归调用:
/*
 * 数列:1,1,2,3,5,8... 第40个数的值。数列满足递推公式
 * F1=1,F2=1,Fn=Fn-1+Fn-2(n>2);
*/
public class DiGuiDiaoYong {
/*
    //方法一
    public static void main(String[] args) {
        System.out.println(f(40));
    }
    public static int f(int n) {
        if(n==1||n==2) {
            return 1;
        }else {
            return f(n-1)+f(n-2);
        }

    }
*/
    //方法二
    public static void main(String[] args) {
        System.out.println(f(-21));
    }
    public static long f(int n) {
        if(n == 1 || n == 2) {
            return 1;
        }
        if(n < 1) {
            System.out.println("输入有误");
            return n;
        }
        long f1 = 1L;
        long f2 = 1L;
        long f = 0;
        for(int i=0;i<(n-2);i++) {
            f = f1 + f2;
            f1 = f2;
            f2 = f;
        }
        return f;   
    }
}

分析内存的执行过程:

class BirthDate {
    private int day;
    private int month;
    private int year;

    public BirthDate(int d,int m,int y) {
        day = d;
        month = m;
        year = y;
    }
    public void setDay(int d) {
        day = d;
    }
    public void setMonth(int m) {
        month = m;
    }
    public void setYear(int y) {
        year = y;
    }
    public int getDay() {
        return day;
    }
    public int getMonth() {
        return month;
    }
    public int getYear() {
        return year;
    }
    public void display() {
        System.out.println(day + "-" + month + "-" + year);
    }
}

public class Test{
    public static void main(String[] args) {
        Test test=new Test();
        int date=9;
        BirthDate d1=new BirthDate(7,7,1997);
        BirthDate d2=new BirthDate(1,2,2008);
        test.change1(date);
        test.change2(d1);
        test.change3(d2);
        System.out.println("date="+date);
        d1.display();
        d2.display();
    }
    public void change1(int i) {
        i = 1234;
    }
    public void change2(BirthDate b) {
        b = new BirthDate(22,2,2004);
    }
    public void change3(BirthDate b) {
        b.setDay(22);
    }
}

java为解释型语言

Java的八种基本类型:(按字节来分)
boolean 布尔型 1个字节 8bit(8位)
byte 字节类型 1个字节
char 字符类型 2个字节
short 短整型 2个字节
int 整型 4个字节
float 浮点型(单精度) 4个字节
long 长整型 8个字节
double 双精度类型 8个字节

Java中默认的整数类型是int,如果要定义为long ,则要在数值后加上L或者l
默认的浮点型是双精度浮点,如果要定义float,则要在数值后面加上f或者F
一个字节等于8位,1个字节等于256个数。2^8
一个英文字母或者阿拉伯数字占一个字节
一个汉字占2个字节

小可转大;大不能转小!

byte<short<int<long<float<doublechar<int<long<float<double

面向对象思维:
1.考虑该问题下有那些类那些对象2.
2.考虑这些类和这些对象的每一个类每一个对象有哪些属性和方法
3.考虑类与类之间有什么关系

类与类间的关系:
1.关联(弱)
2.继承(强)
3.聚合(强)
4.实现(父子类)
5.多态

如何在内存中区分类和对象:
*类是静态的概念,代码区
*对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才能占用内存。

构造方法没有返回类型(void也没有)

猜你喜欢

转载自blog.csdn.net/Zhou2016127224/article/details/82708864