1 package org.java; 2 3 public class MainTest { 4 5 public static void main(String[] args) { 6 //类声明的变量 成为 对象 7 //创建对象分为两步: 8 //1:对象的声明: 9 //2:为对象分配内存: 10 Test test;//对象的声明 Test(类名) test(对象名); 11 //如果只是声明了对象,那么这时候这个对象 为空对象,无法引用,还没有得到实体,需要分配内存之后才可以 12 //若是使用 空对象 ,会出现NullPointerException异常 13 //可以通过new 为对象的实例变量 分配不同的 内存空间 14 //如果类中 有 类变量,那么JVM 只会分配一处内存 给这个 类变量,其余所有的不同的对象 都共享这个类变量,在同一内存空间; 15 //JVM程序执行文件的时候,类的字节码文件(.class)被加载到内存; 16 // 如果这个类没有创建对象,类中的实体变量 不会 配分配内存 17 // 但是 :类中的类变量在类被加载到 内存的时候,就分配了相应的内存(在堆中),只分配一次,以后都不会在分配了 18 // 如果该类创建对象,那么不同对象的 实例变量互不相同 ,(在堆中)分配不同内存空间 19 // 类变量的 内存空间 在 程序退出运行之后,才释放占用的内存 20 test=new Test();//为对象分配内存:使用new方法和构造方法为对象分配内存 21 22 23 24 25 //创建对象 26 //若是没有指定初值:整型变量默认初值为0,浮点型默认初值为0.0,boolean型默认为false,引用型默认为null 27 //堆是一种运行时的数据结构:用于动态的内存管理 28 //java中的对象在 堆中分配内存 29 //对象的引用 在 栈中 分配内存 30 //解释:当 用类创建一个对象的时候,类的成员变量 在 堆中 分配内存空间(这写内存空间称为:对象的实体 或者对象的变量) 31 // 而对象中 只放着 引用,引用在栈中 分配内存 32 Test test2=new Test(1, 2, "Name_test2"); 33 34 //使用对象 35 //通过运算符. 可以访问变量和方法 36 //对象.方法名 :方法中的局部变量被分配内存空间,方法执行完毕,局部变量释放内存空间 37 test2.height=1;//对象 对 成员变量 进行操作 38 Test.cnt+=1;//类 对 类变量操作 39 test2.setHeight(3);//调用set方法 40 test2.area(2, 2);//调用重载的功能方法 41 //方法必须要实例化,即有具体的值; 42 //传值:只是传的副本,不会影响原来的传来的值 43 //只有引用型的参数 传递的是原值的引用,会影响原值 44 test2.area(2.2, 1);//重载的方法调用 45 46 System.out.println(test2); 47 48 49 50 51 } 52 53 }