Java笔记4——方法,递归,数组 以及数组的内存分配图

一、方法
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<arr.length;i++){
       for(int j=0;j<arr[i];j++){
         System.out.println(arr[i][j]);
     }
  }
}

例子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
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值