JVM内存结构
编译完生成的字节码文件还是硬盘里的一个文件,字节码文件是个类,运行时才把类加载到内存中,才为其分配内存空间
对象数组
第一行创建了一个20个大小的对象数组,但每个对象都是空指针,没有在堆中创建对象并指向它,第二行给每个空指针对象都在堆中创建了一个对象,用来存储数据。
匿名对象
方法的重载
1、参数表顺序不同,是重载
2、仅仅返回值不同,不是重载
3、仅仅 权限不同也不能重载
4、仅仅形参变量名不同不能重载。
5、示例1:
可变个数形参的方法
0、具体使用
1、变量个数可以任意个
2、优先选这个最合适的函数
3、构成重载
4、编译器认为这俩一样
5、这种方式不能作为数组的参数
6、这种方式才可以作为数组的参数
7、这种形式也能做它的参数
8、可变个数形参必须写在末尾
下面是出错的,
下面这个是对的
9、要想声明 可变个数的参数,那么一定要放在最后,如果有两个,必然有一个不在最后,所以最多只能声明一个 可变形参。
10、相当于数组,也能循环调用输出
方法参数的值传递机制
引入
JAVA中引用数据类型只有null和地址值两种赋值。
引用数据类型例如 数组和对象。
变量
对于基本数据类型
参数
对于引用类型的参数
如果参数是引用数据类型,此时实参赋给形参的实参存储数据的地址值。
以下可完成swap。
示例1:封装函数完成数组排序。
示例2:
示例3:倒着除
示例4:
结果:
多态,重载:
println(char[])源代码是遍历数组,
println(Object)源代码是打印数组地址。
递归方法的使用
递归定义
示例1:
示例2: