第十六天
学会了方法参数及其传递:基本类型,引用类型,明天学习方法递归
****方法的参数传递通常分为两种:值传递和引用传递
Java的传递只有值传递,因为不管用户传入的参数是基本类型的还是引用类型,都是对原有值的复制。
1.传入的是基本类型
如果传入的是基本类型会在栈中分配内存,当按基本类型传递时,实参会多复制一份因此,在此方法内修改参数值时不影响原实参。
2.引用类型传递
引用类型传递是在栈中声明,在栈中分配内存
P p;
p= new p();
切记,如果没有给对象初始化,汇报NullPointerException异常,也就是空指针异常,意思就是对象没有初始化。
当通过“对象名.属性名”实际上就是每一个对应的堆内存空间的属性,那么按照图中创建一个新的对象时,肯定不会相互影响,只要存在了关键字new,Java就会开辟内存空间。
***从结果可以看出,它们之间互不影响,而且发现每个对象实际保存的只是属性,并没有方法,以为所有的方法都是每个对象共同拥有的,保存在全局代码区中。栈内存保存的是对内存的引用地址,而栈内存中保存的是每一个对象拥有的属性,全局代码中保存的是所有类中的方法,表示公共调用。
***所谓的引用类型传递就是一个堆内存空间,可以同时被多个栈内存所指向,那么类本身也是一样,即一块堆内存可以同时被多个对象所同时指向。