java中值传递和引用传递的知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/czh500/article/details/84992182

java中值传递和引用传递的知识点

直接看下面的截图和代码吧

package com.xuebao;

public class ValueAndRef {
	
	/**
	 * 
	* @Description: (测试值传递和引用传递) 
	* @param  pa 基本类型  值传递
	* @param  pstu 自定义类 引用传递
	* @param  parr  数组 引用传递
	* 2017年2月20日下午5:46:32
	* jerry
	* @return void    返回类型 
	 */
	public void change(int pa, Student pstu, int[] parr) {
		pa = pa + 10;
		pstu.age = pstu.age + 15;
		parr[0] = parr[0] + 5;
		System.out.println("方法体中改变后a = " + pa);
		System.out.println("方法体中改变后student.age = " + pstu.age);
		System.out.println("方法体中改变后arrs[0] = " + parr[0]);
	}

}
package com.xuebao;
public class TestValueAndRef {

	public static void main(String[] args) {
		int a = 10;
		Student student = new Student();
		student.age = 10;
		int[] arrs = new int[]{9, 55, 89, 92};
		System.out.println("初始值a = " + a);
		System.out.println("初始值student.age = " + student.age);
		System.out.println("初始值arrs[0] = " + arrs[0]);
		
		ValueAndRef valueAndRef = new ValueAndRef();
		valueAndRef.change(a, student, arrs);
		
		System.out.println("调用方法后a = " + a);
		System.out.println("调用方法后student.age = " + student.age);
		System.out.println("调用方法后arrs[0] = " + arrs[0]);
		/**
		 * java中值传递和引用传递的知识总结
		 * 1.定义:方法在调用完毕之后是否改变参数的原始数值
		 * 2.值类型按值传递,方法调用完数值不变
		 * 3.引用类型按引用传递,方法调用完数值改变
		 * 4.不管是值类型还是引用类型,都是把栈中空间备份一份,只不过值类型备份具体数值,引用类型备份内存地址,所
		 * 以说java都是按值传递也对,这是从备份的角度来说的
		 * 5.java数据类型分类原则,根据是否封装指针(即分配空间形式)
		 * 6.基本类型,值类型,只在栈中分配一块内存,8个基本数据类型(byte,short,int,long,float,double,char,boolean)
		 * 7.引用类型 在栈和堆中各分配一块内存,类,数组,抽象类,接口等都是引用类型
		 */
	}
}

猜你喜欢

转载自blog.csdn.net/czh500/article/details/84992182