一、栈
编译后的class文件放在方法区
需要执行的代码进行压栈执行,执行完毕后立马弹栈释放内存空间。
字符串之间的比较用equals
eg:
“zhangsan”.equals(a)
二、参数
1.方法的参数
形式参数–>形参:送一方法是()中的参数
相当于局部变量的声明
作用域:在当前方法中有效
实际参数–>实参:调用方法是()中的参数
相当于为局部变量赋值
形参不存在默认值,
形参与实参要求一一对应
类型对应
顺序对应
个数对应
2.return关键字
有返回值类型的方法中:必须存在!!!必须带出返回值
1.提前结束方法
2.带出返回值到调用此方法处
在没有返回值类型的方法中;
1.提前结束方法
不可达语句的出现一般有一下集中情况:
1)return后面出现其他语句
2)break后面直接出现的语句
3)continue后面直接出现的语句
4)while–true|死循环后的代码
5)while(false){中的代码
三、递归
方法的递归:
自己调用自己
递归头:停止自己调用自己的条件
递归体:自己调用自己
临界条件:递归头:停止自己调用自己的条件
递归前进段:不停的自己调用自己的过程
递归后推断:当满足临界条件之后,把结果返回给上一层的过程
递归可以简化结构,合理的地方使用可以让程序变得更简单,但是用不好容易造成内存的溢出,慎重使用。
递归方法打印99乘法表:
public static void print(int n){
//临界条件
if(n==1){
System.out.println("1*1=1");
return;
}
//打印n-1之前的所有行乘法表
print(n-1);
//当前行n的乘法表
//i就是每一列
for(int i=1;i<=n;i++){
System.out.print(i+"*"+n+"="+i*n+"\t");
}
//换行
System.out.println();
}
四、数组
数组
是一种存储数据的数据结构
变量:存储单个数据
数组:存储多个数据
相同类型数据的有序集合
在内存中是一段连续的内存空间
特点:
数组是一种引用数据类型
数组是定长,长度一单确定不可改变
一个数组中存储相同类型的数据
数组中数据是有序的,通过索引(下标)进行管理
下标|索引
从0开始,每次+1
根据数组的索引操作数组中的数据
第一个索引–>0
最后一个数据的索引–>数组名.length-1
操作数组中的数据:
数组名[下标|索引]
数组的长度
数组名.length(连续内存空间的个数)
数组的定义:
声明:
变量的声明: 数据类型 变量名;
数组的声明: 数据类型[] 数组名;
数据类型 数组名[];
数据类型 : 可以为任意数据类型(基本|引用)
规定当前数组中存储数据的类型
初始化:
动态初始化 : 先创建数组后赋值数据
数据类型[] 数组名 = new 数据类型[长度n];
数组先创建没赋值存储默认值:
整数->0
小数->0.0
boolean->false
字符 -> ’ ’
引用数据类型 -> null
静态初始化 : 创建数组的同时赋值
数据类型[] 数组名 = new 数据类型[]{值1,值2,值3…};
数据类型[] 数组名 = {值1,值2,值3…}; -->简略写法
数组的属性:
获取数组的长度 数组名.length
数组的遍历方式:
1.普通for循环,遍历i当做数组的索引
2.增强for循环|for…each 从前往后–>默认
for(数据类型 变量名:数组名|集合名){
变量名->指代|代表数组中的每一个数据
}
增强for循环中的变量不是索引,而是数组中的每一个数据
执行原理是从前往后挨个赋值给变量并输出;