方法
曾用方法分析
1.System.out.println
类 对象 方法
上面是语句的集合,它们在一起执行一个功能
方法构建
1.方法是解决一类问题的步骤的有序组合
2.方法包含于类或对象中
3.方法在程序中被创建,在其他地方被引用
public class method {
public static void main(String[] args){
int sum=add(1,2);
System.out.println(sum);
}
public static int add (int a,int b){
return a+b;
}
}
方法的重载
public class method {
public static void main(String[] args){
int sum=add(1,2);
System.out.println(sum);
}
public static int add (int a,int b){
return a+b;
}
}
当上面用10.0等小数比较的时候
public class method {
public static void main(String[] args){
int sum=add(1,2);
System.out.println(sum);
}
public static int add (int a,int b){
return a+b;
}
public static double add (double a,double b){
return a+b;
}
}
可以构建一个方法名相同但是数据类型不同的方法,即为方法的重载
方法重载的规则
1.方法名必须相同
2.参数类表必须不同(类型个数或者参数排列顺序不同)
3.方法的返回类型可以相同或者不同
4.返回类型不同不能成为方法的重载
命令行传参
Java可以通过控制台传递参数
可变参数
public static int add (int a,int ... b)
可变参数可以被传入多个同一数据类型的数据(根据输入的实参决定),且需要放在形参的最后面(本质就是数组)
递归
递归是方法自己调用自己
递归包括递归头和递归体
1.递归头判断什么时候结束调用(无则会死循环),递归体判断什么时候调用自己
public class 递归 {
public static void main(String[] args){
System.out.println(f(5));
}
public static int f(int n){
if(n==1) return 1;
else return n*f(n-1);
}
}
递归分两阶段前阶段和返回阶段,先递后归,先到递归头判断结束位置后再进行计算(递归可能造成内存溢出建议在基数小的时候使用)
数组
数组概念
1.数组是相同类型数据的有序集合
2.数组所描述的是相同类型的数据,并按一定先后次序排列组合而成
3.每一个数据称为一个数组元素,可通过下标访问
4.数组被创建后长度是确定的
5.元素必须是相同类型不允许混合类型
6.数组中元素可以是任何数据类型,包括基本类型和引用类型
7.数组本身是对象,Java中对象在堆中
8.数组下标的合法边界为[0,length-1]越界会报错
数组声明的创建
1.数组声明int[] nums(首选) int nums [](延续c/c++)
2.java用new操作符来创建数组 nums=new int[10]
3.java数组通过索引访问nums[0]=1;(赋值)
4.获取数组长度 数组名.length
Java内存分析
Java内存包含堆,栈,方法区
1.堆存放new的对象和数组
2.栈存放基本变量类型(包含具体数值)
int[] nums声明数组在栈中存放一个名为nums的内存空间
nums=new int[10]创建数组在堆中有10个内存空间
三种初始化
1.静态初始化:创建+赋值
int[] a ={1,2,3};
2.动态初始化(包含默认初始化)
int[] b = new int[10];
b[0]=1;
3.默认初始化:数组创建的时候赋值前初始值都为0
数组的使用
1.普通的for循环
int[] arrays = {1,2,3};
int i=0;
for (i=0;i<arrays.length;i++){
System.out.println(arrays[i]);
}
2.for-each循环:
int[] arrays = {1,2,3};
for (int array : arrays){
System.out.println(array);
}
arrays表示数组名,array表示数组的每一个元素,该代码依次输出arrgys的值
3.数组作返回值在方法中使用
public class 数组 {
public static void main(String[] args) {
int [] a ={1,2,3};
int i=0;
int [] c = reverse(a);
for (i=0;i<a.length;i++)
{
System.out.println(c[i]);
}
}
public static int[] reverse(int [] c){
int [] b =new int[c.length];
int i=0,j=0;
for (i=0,j=c.length-1;i<c.length;i++,j--)
{
b[j]= c[i];
}
return b;
}
}
如上就是一个反转数组顺序的代码,运用方法时候返回值是数组b
多维数组
1.多维数组可以看成数组的数组比如二维数组就是每一个元素都是一维数组的数组
2.二维数组
int a[][] = new int[3][3];
可以看成a为一个二行五列的数组
3 .二维数组赋值
int[][] array = {{1,2,3},{1,2,3},{1,2,3}};
4.二维数组输出
System.outprinln(array[0]);
输出不了值
5.应
System.out.prinln(arrat[0][0]);
才能输出1
6.用
printArray(array[0]);
可以输出1 2 3
7.array.length表示的是一维数组的个数,array[i].length表示的是第i个里面元素的个数
Arrays类
1.数组的工具类java.util.Arrays,可以在jdk帮助文档找到相关
2.
int[] a ={1,2,3,4,5,6,7}
System.out.prinln(Arrays.toString(a));
打印[1,2,3,4,5,6,7]
稀疏数组
当一个数组中大部分是同一个数时候可以使用稀疏数组来来保存该数组
稀疏数组先记录数组有几行几列判断有多少不同值,再记录不同值出现的行列和值,可以用来压缩空间
行 | 列 | 值 | |
---|---|---|---|
[0] | |||
[1] | |||
… | … | … | … |