java - 基础 - 方法

结构:

权限修饰符 [特征修饰符] 返回类型 方法名字(参数列表) [抛出异常]{

    方法内容。

}

方法代码存在硬盘中,会在方法区存一个映射。

Test t = new Test();

参数t存在栈内存中,储存了实例的内存地址

实例存在堆内存中

实例的方法也存在堆内存中,执行时临时放在栈内存中执行

主方法main不属于任何class,而是属于虚拟机。(不需要调用)

测试:

import java.util.*;
public class Test{

    public int num = 1;

    public void changArray(int[] a){
        a[0] = 10;
    }

    public void changNum(int a){
        a = 10;
    }


    public static void main(String[] args){


        System.out.println("---class是引用数据类型,它的实例存在堆内存中,参数m1,m2在栈内存中存的是实例在堆内存的地址,m2 = m1赋给m2的是m1的地址,所以m1改变时m2也会改变---");
        Test m1 = new Test();
        m1.num = 1;
        Test m2 = new Test();
        m2 = m1;
        System.out.println(m1.num);
        m2.num = 2;
        System.out.println(m1.num);//m2修改后,m1也改变了

        System.out.println("---数组也是引用数据类型,变量存的也是地址---");
        int[] a1 = new int[]{1,2,3};
        System.out.println(a1[0]);
        m1.changArray(a1);
        System.out.println(a1[0]);//数组作为参数在方法中被操作后,方法执行完毕本身发生了变化

        int a2 = 1;
        System.out.println(a2);
        m1.changNum(a2);
        System.out.println(a2);//数字作为参数在方法中被操作后,方法执行完毕本身不变化
} }

猜你喜欢

转载自www.cnblogs.com/clamp7724/p/11586301.html
今日推荐