递归调用:
/*
* 数列: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<double;
char<int<long<float<double;
面向对象思维:
1.考虑该问题下有那些类那些对象2.
2.考虑这些类和这些对象的每一个类每一个对象有哪些属性和方法
3.考虑类与类之间有什么关系
类与类间的关系:
1.关联(弱)
2.继承(强)
3.聚合(强)
4.实现(父子类)
5.多态
如何在内存中区分类和对象:
*类是静态的概念,代码区
*对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才能占用内存。
构造方法没有返回类型(void也没有)