Java中引用传递

//Java中的引用传递

class Ref1{
	int temp = 10 ;
	String Str = "hello";
}

public class HelloWorld {
	public static void main(String[] args){

		//案例一
		/*
		Ref1 r1= new Ref1();
		r1.temp = 20 ;
		System.out.println(r1.temp);
		tell(r1);
		System.out.println(r1.temp);
		*/

		/*
		 * 案例二
		String temp = "Hello";
		System.out.println(temp);
		tell(temp);
		System.out.println(temp); //打印的效果还是Hello,因为String类型不可变
		*/
		Ref1 r1 = new Ref1();
		r1.Str = "asdasd";
		System.out.println(r1.Str); //此时的类中的值被改变-->原因是因为对r1进行了实例化,相当于
		//开辟了一块新的内存空间用来存储yangyuanxin这个字符串
		tell(r1);

	}
	//案例一
	/*
	//值被改变
	public static void tell(Ref1 r2){
		r2.temp = 30 ;
	}
	*/
	//案例二
	public static void tell(String str2){
		str2 = "jAKE";
	}
	//案例三
	//.....其实在这里创建一个方法实现上述的过程也是一样的效果
	public static void tell(Ref1 str2)
	{
		str2.Str = "yangyuanxin";
	}
}
	
时间: 2024-10-01 17:50:22

Java中引用传递的相关文章

java this 传递-Java中this传递的用法

问题描述 Java中this传递的用法 假设有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数,那代码怎么写啊 解决方案 没有继承关系的类,不能用构造函数传值.你可以让部件类的构造函数包含一个容器的参数,在其中初始化: class Part { pbulci Part(Container c) { ... } } class Container { public Container() { Part p = new Part(t

理解Java中的引用传递和值传递

关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习和分析一下,着急可以先看最后的结论. >>基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型.相应的,变量也有两种类型:基本类型和引用类型. 基本类型的变量保存原始值,即它代表的值就是数值本身: 而引用类型的变量保存引用值,"引用值"指向内存空间

java中如何区分值传递和引用传递

java中值传递和引用传递一直饱受争议难以区分,下面我通过几个例子来区分一下什么时间是值传递,什么时间是引用传递 1:首先先说值传递:基本类型(int ,float ,long,byte,short ,double, char,boolean)作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的 package com.test.list; public class Test1 { public static void main(String[] args) { int i

对象-java传递 ”值传递和引用传递“还是全部 “值传递”

问题描述 java传递 "值传递和引用传递"还是全部 "值传递" 若说值传递.基本类型是copy的值赋给形参,对象是把 堆中对象的 地址 传给 形参. 若说分为值传递和引用传递..引用传递 是因为这个传的地址,导致实参和形参 操作的都是同一块内存. 有点乱,像文字层次上的撕逼.. 若往引用传递方面思考,C++的指针又把我搅乱了.,java里不能直接管理内存,传递的不是 变量本身 的栈地址.而是变量的内容(值) 解决方案 java没有什么值传递引用传递,都是传递对象引

如何理解java当中的引用传递

问题描述 如何理解java当中的引用传递 涉及几个类,几个对象,几个方法,几个变量,传递的是什么,一定包含main方法吗? 解决方案 一定包含main方法是什么意思,如果是基本类型,其实是值传递,也就是说在方法内部修改不会影响外部,如果是传递对象,传的就是引用,即这个对象的地址值,当你在方法里修改了这个对象的内容,会改变方法外的对象的内容,可以看下Java编程思想的前几章,讲的很清楚 解决方案二: java没有引用传递,只是java中的对象本身是引用类型. 解决方案三: 一.理解 ★ 当一个变量

java数据-java中键值对数据类型属于引用数据类型吗

问题描述 java中键值对数据类型属于引用数据类型吗 java中键值对数据类型属于引用数据类型吗,可以进行加减乘除操作吗 解决方案 你说像 Map接口的子类?这类引用类型的对象是不能直接进行加减乘除的.能进行加减乘除的只有基本类型和基本类型的包装类.当然如果你Map里放的值是基本类型,比如 Map对象map.put("key",1); 这样的存储你是可以通过 map.get("key") 获取 键值对的值,再对键值对的值进行运算的.但不能对map进行直接运算 解决方

java中为什么x的输出为20 而 i 的输出为10

问题描述 java中为什么x的输出为20 而 i 的输出为10 public class Pass { static int j=20; public static void main(String []args){ int i=10; Pass p=new Pass(); p.method(i); System.out.println(i); System.out.println(j); } public void method(int x){ x=x*2; j=j*2; System.out

java 中函数的参数传递详细介绍_java

 java中函数的参数传递 总结:   1.将对象(对象的引用)作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的对象.   2.当将基本类型或基本类型的包装集作为参数传递时,传递的是值.也就是说函数内对参数所做的修改不会影响原来的变量.   3.数组(数组引用))作为参数传递时传递的是引用(相当于指针).也就是说函数内对参数所做的修改会影响原来的数组.   4.String类型(引用)作为参数传递时传递的是引用,只是对String做出任何修改时有一个新的Str

java中数据交换的问题

问题描述 java中数据交换的问题 晚上在写程序的时候需要用到交换数据,所以我就主类里面写了一个swap, 但是在调用之后发现数据没有交换成功,可是在swap里面数据的确交换成功了呀, 不知道是什么原因,下面贴出代码: public static void main(String[] args){ int a,b; a = 4; b = 5; swap(a,b); System.out.println(a+","+b); } public static void swap(int a,