一、方法
1.方法的定义:实现一个特定功能的代码块。
方法是把一个功能进行封装起来,方便重复调用;
方法的定义规则:1.方法定义在类中;2.方法与方法是平级关系,不能进行嵌套。
方法的形式:public static void show(){要实现功能的代码}
public 修饰符 公共的 (public 表明可以被任意类调用)
static 状态修饰符 静态的
void 空的 没有返回值
show()方法名
2.定义方法时可以加参数,并确定参数类型,方法中的参数为形参,调用方法时传入的参数为实参,实参不需要数据类型;
public static void setName(String name){}
3.方法重载:方法名一致,参数的个数不同或者参数类型不同的方法称为方法重载;在调用方法时,会根据实参的类型数目和方法进行匹配。
例子:求键盘录入的三个数中的最大值
import java.util.Scanner;
public void MaxDemo{
public static void main(String[] args){
Scanner sc=new.Scanner(System.in);
System.out.println("请输入三个正整数");
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int max= Max(a,b,c);
System.out.println("最大值为:"+max);
}
//封装起来的求最大值的方法
public static void Max(int a,int b,int c){
int max1=a>b?a:b;
int max=max1>c?max1:c;
}
}
二、递归
递归的定义:在方法中调用方法本身的操作称之为递归;
递归的注意事项:1.递归要有出口;2.递归的次数不应太多;
例子:求斐波那契数列的第20个数是多少
public void Demo{
public static void main(){
int r=DiGui(20);
System.out.println(r);
}
public static int DiGui(int i){
if(i==1||i==2){
return 1;
} else{
return DiGui(i-1)+DiGui(i-2);
}
}
}
三、数组
1.一维数组
三种 定义形式:定义数组长度为5 的数组
int[] arr1=new int[5];
int[] arr2=new int[]{1,2,3,4,5}
int[] arr3={1,2,3,4,5};
2.二维数组的三种定义形式:
int[][] arr1=new int[5][];
int[][] arr2=new int[][]{{1,2},{3,4,5},{6,7},{8,9},{10,11},{12}};
int[][] arr3={{1,2},{3,4,5},{6,7},{8,9},{10,11},{12}};
三、Java中的内存分配
栈:存储局部变量,局部变量是在方法中定义的变量或者在方法声明上 定义的变量。
堆:new出来的每一个东西
如果没有初始化,在堆内存中都有默认值:
int char short long 默认0;
float double 默认0.0;
char 默认‘u/0000’
boolean 默认false
引用数据类型 默认null
方法区:存放方法
例子1:遍历二维数组
public static void main(){
int[][] arr={{1,2},{3,4,5},{6,7},{8,9},{10,11},{12}};
for(int i=0;i
例子2:二维数组传参
public static void main(){
int[][] arr=new int[2][];
int[] arr1=new int[2];
arr1[0]=10;
arr1[1]=20;
int[] arr2=new int[2];
arr2[0]=30;
arr2[1]=40;
System.out.println(arr[0]);//null
arr[0]=arr1;
arr[1]=arr2;
System.out.println(arr[0]);//一个地址
System.out.println(arr[1][0]);//30
}