java重载/数组/递归

一.方法的重载

概念:在同一个类中,方法名相同,参数列表(顺序)不同,与返回值无关
重载好处:减少方法的个数,便于程序员掌握,程序在运行过程中
通过传递不同的参数,动态去调用与之匹配的方法
最佳匹配类型:当传实参的时候,如果多个重载的方法都能够接收该实参,那么他会去找最匹配的那个
如果没有最匹配的那个 就去找能向上转型的最近的那个

二.递归

阶乘
5!=5*4!
4=4*3!
3=3*2!
2=2*1
递归:由此及彼 以此类推 自己调用自己的过程
两个步骤:
1.给程序一个出口 当满足这一条件的时候 循环结束
2.在符合条件的情况下 简化同性质的问题 调用自己 得到问题的答案

三.数组

什么是数组
数组就是用来存储同一类型数据,定长的容器
类型
数组是引用数据类型
数组的好处
1.可以存储多个同类型的数据
2.可以给这些数据从0开始编号 方便操作这些数据

语法格式

1.动态初始化

数据元素类型 [] 数组名 = new 数组元素类型 [数组元素个数];
//int[] x = new int[3];
//int x[] = new int[3];
//变量x为数组类型(数组也是一种类型)

2.静态初始化

数组元素类型 [] 数组名 = new 数组元素类型[]{元素1,元素2,....}
int [] x= new int []{10,20,30};//[]里不写长度 会根据元素多少分配长度
int [] x={10,20,30};
什么时候用静态初始化 什么时候用动态初始化(静态初始化 格式 new 数组元素类型)
当确定了元素内容 就用静态初始化
当确定了数组长度 就用动态初始化
内存分析:
java程序在运行时 需要在内存中分配空间 为了提高运算效率 又对空间进行了不同区域的划分
因为每一篇区域都有特定的处理数据方式和内存管理方式


栈内存

用于存储局部变量(方法里 形式参数列表 定义在for循环)
当数据使用完 就自动释放

堆内存

用于存储数组和对象 用new关键字建立的实例都存放在堆内存中
每一个实例都有一个内存地址值
实体中的变量都有默认初始化值
byte short int--->0
long--->0L
float--->0.0F
double--->0.00
boolean--->false
char--->\u000--->表示空
引用数据类型--->null
垃圾回收机制 当实体不在被使用 会在不确定的时间被垃圾回收器回收
小知识:c++需要手动回收 java是自动回收
方法区 本地方法 寄存器

遍历数组的方式

1.普通for循环

for (int i=0;i<x.length ;i++ )
{
System.out.print(x[i]+" ");
}

2.增强for循环(forEach循环)

语法:
for(数组中的元素类型 :数组名)
{
数组中变量类型 临时变量=变量;
}
//实例
for (int i:x )
{
System.out.print(i+" ");
}
区别:
普通for 循环变量 代表角标 在循环体中 可以 获取角标/元素 可以进行复杂的操作
增强for 变量代表的是数组中的元素 不存在角标

数组的排序:

排序也是比较,但是和求最值不同
1.选择排序
选择一个位置
2.冒泡排序
相邻两个元素进行比较
3.快速排序
1.设置起始点/结束点 和一个比较值
2.将比 基准值 小的移到左边 大的移到右边
起始点 循环 右移
结束点 循环 左移
3.让比 基准值 小的范围扩大 比 基准值 大的范围扩大
当起始点 和结束点 错开后 结束一轮循环

递归反复二三步

数组角标的查找:

1.顺序查找
2.二分查找/折半查找
前提:必须是有序数列 升序/降序都可以
通过将待查找的元素与中间索引值对应的元素进行比较
若小于中间元素 去左边 end = middle-1
若大于中间元素 取右边 start = middle+1
继续折半 直到arr[middle] = value 就找到了 否则返回一个负值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值