递归:(典型例子就是计算阶乘)
①必须有递归头,如果没有递归头,程序将陷入死循环,最终程序内存溢出
②还必须有递归体,什么时候需要调用自身方法。
JAVA内存分析:
①堆:存放new的对象和数组可以被所有的线程共享,不会存放别的对象引用
②栈:存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面的具体地址)
③方法区:可以被所有的线程共享
包含了所有的class和static变量
数组相关知识:
1.数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化;
2.数组的四个特点:
①长度确定,数组一旦被创建,大小就是不可改变的;
②数组元素必须是相同的类型,不允许出现混合类型;
③数组中的元素可以是任何数据类型,包括基本类型和引用类型;
④数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量;
数组本身就是对象,JAVA中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
稀疏数组:
1.当一个数组中大部分元素为0,或者大部分元素相同时,可以使用稀疏数组来保存该数组;
2.稀疏数组的处理方式:
①记录数组有几行几列,有多少个不同值;
②把具有不同值的元素的行和列记录在一个小规模的数组中,从而缩小程序的规模;
posted @
2021-03-07 22:35
大器晚成316
阅读(
22)
评论()
收藏
举报