方法名称必须相同
方法的形参必须不相同(个数、类型、参数排列顺序等)
方法的返回值类型可以相同也可以不同
仅仅返回值类型不同不足以构成方法的重载
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等逐个去匹配,以选择对应的方法,如果匹配失败,则编译器报错。
public class Demo3 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]:" + args[i]);
}
}
}
JDK1.5开始支持传递同类型的可变参数给一个方法
方法声明中,在指定参数类型后加一个省略号(...)
一个方法只能指定一个可变参数,它必须时方法的最后一个参数
递归头(边界):什么时候不调用自身方法。如果没有头,将陷入死循环;
递归体:什么时候需要调用自身方法
Java都是使用栈机制的,递归算法会向栈中压入大量的方法,随着算法的深度大幅提升,会产生额外的时间开销,甚至会导致物理空间上的不足,从而造成栈内存溢出。
递归的深度越大,时空性越差。
因此,在实际开发中,能不使用递归就尽量不使用递归。
public class Demo7 {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
System.out.println(f(30));
System.out.println(System.currentTimeMillis());
}
?
static int f(int n) {
if (n == 1) {
return 1;
} else {
return n * f(n-1);
}
}
}
数组声明--在栈内存空间声明一个变量,里面保存的是数组的名称
创建数组--在堆内存中开辟空间,用来存储实际的数组每个元素并默认初始化每个元素的值(基本类型默认是0,其他引用类型默认是null)
数组赋值--给数组元素赋值(数组中定位每个元素使用的是索引/下标,从0开始,最大为数组长度减1,超出之后会报数组下标越界的异常)
长度是确定的。数组一但创建,它的大小就不可以改变
其元素必须是相同类型
数组中的元素可以是任何数据类型
数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存基本数据类型还是其他对象类型,数组对象本身是在堆中的。
数组是相同数据类型的有序集合
数组也是对象。数组元素相当于对象的成员变量
原文:https://www.cnblogs.com/dbin1126/p/14628682.html