更新时间:2022-04-01 来源:黑马程序员 浏览量:
要想使用一个类则必须要有对象。在Java程序中可以使用new关键字创建对象,具体格式如下:
类名对象名称= null; 对象名称=new 类名();
上述格式中,创建对象分为声明对象和实例化对象两步,也可以直接通过下面的方式创建对象,具体格式如下:
类名对象名称= new 类名();
例如,创建Student类的实例对象,示例代码如下:
Studentstu= newStudent();
上述代码中,newStudent()用于创建Student类的一个实例对象,Studentstu则是声明了一个Student类型的变量stu。运算符“=”将新创建的Student对象地址赋值给变量stu,变量stu引用的对象简称为stu对象。
了解了对象的创建之后,就可以使用类创建对象了,示例代码如下:
class Student { String name; // 声明姓名属性 void read() { System.out.println("大家好,我是" + name + ",我在看书!"); } } public class Test { public static void main(String[] args[]) { Student stu = new Student(); //创建并实例化对象 } }
上述代码在main()方法中实例化了一个Student对象,对象名称为stu。使用new关键字创建的对象是在堆内存分配空间。stu对象的内存分配如图3-2所示。
图3-2stu对象的内存分配
从图3-2中可以看出,对象名称stu保存在栈内存中,而对象的属性信息则保存在对应的堆内存之中。
创建Student对象后,可以使用对象访问类中的某个属性或方法,对象属性和方法的访问通过“.”运算符实现,具体格式如下:
对象名称.属性名 对象名称.方法名
接下来通过一个案例学习对象属性和方法的访问,如文件3-1所示。
文件3-1Example01.java
class Student { String name; // 声明姓名属性 void read() { System.out.println("大家好,我是" + name); } } class Example01 { public static void main(String[] args) { Student stu1 = new Student(); // 创建第一个Student对象 Student stu2 = new Student(); // 创建第二个Student对象 stu1.name = "小明"; // 为stu1对象的name属性赋值 stu1.read(); // 调用对象的方法 stu2.name = "小华"; stu2.read(); } }
文件3-1的运行结果如图3-3所示。
图3-3文件3-1的运行结果
在文件3-1中,第2~5行代码声明了一个String类型的name属性和一个read()方法,第9~10行代码创建了stu1对象和stu2对象;第11行代码为stu1对象name属性赋值;第12行代码通过stu1对象调用read()方法。
第13行代码为stu2对象name属性赋值;第14行代码通过stu2对象调用read()方法。从图3-3所示的运行结果可以看出,stu1对象和stu2对象在调用read()方法时,打印的name值不相同。这是因为stu1对象和stu2对象是两个完全独立的个体,它们分别拥有各自的name属性,对stu1对象的name属性进行赋值并不会影响到stu2对象name属性的值。为stu1对象和stu2对象中的属性赋值后,stu1对象和stu2对象的内存变化如图3-4所示。
图3-4stu1对象和stu2对象中的属性赋值后的内存变化
从图3-4可以看出,程序分别实例化了两个Student对象stu1和stu2,分别指向各自的堆内存空间。