一.Java对象与Java对象引用的区别
在Java语言中一切都可以看作对象,但真正操作标识符实质上是一个引用。
1.对象引用
Book book;//对象创建必须要用new Book book=new Book();
引用只是存放一个对象的内存地址,并非存放一个对象。实质上是将创建的Book对象的地址赋给对象引用book,从此book与该对象关联,通过book即可操纵该对象。
2.对象作为参数的特点
普通数据类型作为参数传递是值传递,而对象是引用传递。当对象作为参数时,传递的时对象的地址。
Class IntClass{
Int value;
}
public class RunIntClass{
public static void modifgValue(IntClass s,int val){ //IntClass 是对象引用
s.value=val;
}
public static void main(String args[]){
IntClass a=new IntClass(); //a-main方法-局部变量
modifyValue(a,8);//方法调用
System.out.println(a.value);
}
}
结果为:8
解析:main方法中产生对象——modifyValue中对a引用的对象属性赋值——main方法中显示a对象的属性。
二.Java对象创建与C++对象创建的区别
Java和C++都使用new创建对象,但含义却有所不同,最大的不同之处就在系统的内存分配上。
在C++中,如果用new创建对象时需要注意一下几点:
1.new创建类对象需要指针接收,一处初始化,多处使用
2.new创建类对象使用完需要用delete销毁,以避免浪费存储空间。
3.new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间,而栈中内存的分配和释放是由系统管理的,这样会方便很多。
而在Java中,只写“Book book;”是不会占用内存空间的,产生对象的代码“new book();”它的含义是:根据类模板产生一个对象,并在计算机内存中为此对象开辟出一块新的独立内存空间。在方法调用中,系统会为方法开辟一个栈空间,用于存储方法中的局部变量和形参,并且在方法执行时还能访问复制到对象中的属性。当方法执行完毕时,栈空间被释放。