• 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;
    
  • 相关阅读:
    .net Core自定义中间件中读取Request.Body和Response.Body的内容?
    团队项目的Git分支管理规范
    .net core2.2升级3.1
    .net core EF获取SQL
    EF 查询扩展
    IIS Express启动不了的的解决方案
    AutoMapper
    mssql 数据库“查询处理器用尽了内部资源,无法生成查询计划。”问题的处理
    微服务九大特性
    Flink入门
  • 原文地址:https://www.cnblogs.com/Alpacapyer/p/13976277.html
Copyright © 2020-2023  润新知