结构:
权限修饰符 [特征修饰符] 返回类型 方法名字(参数列表) [抛出异常]{
方法内容。
}
方法代码存在硬盘中,会在方法区存一个映射。
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);//数字作为参数在方法中被操作后,方法执行完毕本身不变化
} }