java学习(3)

java学习(3)

方法

方法是一段具有独立功能的代码块,不调用就不执行

方法的调用过程

  • 方法没有被调用的时候,都在方法区中的字节码文件(.class)中存储
  • 方法被调用的时候,需要进入到栈内存中运行

栈内存 先进后出


方法调用为如下所示

  • 首先方法区内会给每一个类划分一块区域用来存放方法名,
  • 程序开始运行,首先main方法被压入,main中调用eat方法,
  • 因为被调用,紧接着eat方法被压入
  • 开始出栈,首先eat弹出,执行吃饭,
  • 然后main方法被弹出,结束程序

由此可以看出 main 永远是最后一个执行的方法

形参与实参

package hzj;

import javax.swing.*;
import java.util.Random;
import java.util.Scanner;

public class DemoScanner {
    public static void main(String[] args) {
        Random r = new Random();
        int n = r.nextInt(10); // 0-9
        int n2 = r.nextInt(10);
        int res = MAX(n,n2); // 这里n1 n2是实参
        System.out.println(res);
    }

    // 这里 a b 是形参
    public static int MAX(int a,int b){
        return a>b?a:b;
    }
}

方法参数传递(引用类型)

package hzj;

import javax.swing.*;
import java.util.Random;
import java.util.Scanner;

public class DemoScanner {
    public static void main(String[] args) {
        int[] arr = new  int[3]; // [I@4dc63996
        arr[0]=2;
        cal(arr); // 这里传递过去的是数组的地址值,会直接修改
        System.out.println(arr[0]);
    }

    public static void cal(int[] arr1){
        arr1[0] = 1;
    }
}

数组

数据arrary是一种容器,用来存储同种数据类型的多个值
格式

数据类型[] 变量名
int[] arrary

数组的动态初始化

动态初始化,初始化时只指定数组的长度,由系统为数组分配初始值

数据类型[] 变量名 = new 数据类型[数组长度]
int[] arr = new int[3]

打印数组变量的时候,会打印出数组的内存地址,当你低啊用变量的时候,变量会根据内存地址找到对应的数组值

public class DemoScanner {
    public static void main(String[] args) {
        int[] arr = new  int[3]; // [I@4dc63996  // [ 表示当前的空间是一个数组类型  | 表示当前数组容器的数据类型
        System.out.println(arr);
		float[] arr1 = new  float[3]; // [F@d716361  // F
        System.out.println(arr1);
    }
}

数组的静态初始化

初始化的时候,指定数组要存储的元素,系统会自动计算出数组的长度

数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,...}
int[] arr = new int[]{1,2,3}

java中内存分配

java程序在运行时,需要在内存中分配空间
为了提高运算效率,就对空间进行不同区域的划分
每一片区域都有特定的处理数据方式和内存管理方式

java中内存分配的主要几个地方

  • 栈内存 方法运行时,进入的内存,局部变量都存放于这块内存当中
  • 堆内存 new出来的内容都会进入堆内存,并且会存在地址值
  • 方法区 字节码文件(.class文件)加载进入的内存
  • 本地方法栈 调用操作系统相关资源
  • 寄存器 交给CPU去使用




数组复制的时候,只是复制了arr1的指针

arr1 = arr2;
posted @ 2020-11-15 12:01  hzjsea  阅读(92)  评论(0编辑  收藏  举报