JAVA传参数到底是值传递还是引用

原创 2011年06月16日 22:55:00
1、把一个String传进一个函数去修改。却发现在函数外并没有修改成功。

String s = "abcd";
t2(s);
System.out.println(s);

在t2中改变参数的值
public static void t2(String ss){
  ss = ss+ "xxx";
}


打印出来的是 abcd
解决:
这是一个误区,String是一个不可变类,就意思着String的对象是不可以改变的,你对传过去的对象进行更改就会创建一个新的东西,所以外边的没有改变,

java传primitive即普通类型是按值传递,传对象则是引用,而String是个类引用对象,所以传的是参数,但又因为String是不可以变对象,所以外边的值没有可改,
2、以前的java教材有值传递和引用传递,值传递传递的是变量的值,引用传递传递的是对象的地址(注意是对象的地址,不是变量的地址)
现在的java教材好像都称为值传递,上面说了,引用传递传递的是对象的地址,而不是变量的地址,那么变量的值是什么?变量的值就是这个对象的地址,即String s = "abc"; s的值实际上是"abc"的地址,s只是个变量,"abc"才是对象,s="abc"是让变量指向"abc"对象的地址,也就是说让s引用"abc",所以说s的值是个地址,s的内容才是"abc"字符串,从这个角度来看,引用传递也算是一种值传递,传的是变量的值(注意是变量的值,不是对象的值),因为变量的值就是对象的地址。
所以,当看到值传递的说法时,要知道,这里所说的是传递的是变量的值,简单类型的变量的值,就是变量本身的内容,对象类型的变量的值就是对象的地址。当看到引用传递的说法时,要知道,这里所说的是传递的是对象的地址(注意不是变量的地址)
 
 
 
 
 
 
 
 
 
二、传了值还是传了引用

Java的参数传递到底是引用传递还是值传递

首先看一段代码:public static void main(String[] args) { Person a = new Person(23, "a"); Person b = ...

JavaScript 函数参数传递到底是值传递还是引用传递

转载地址:http://bestchenwu.iteye.com/blog/1076557  在传统的观念里,都认为JavaScript函数传递的是引用传递(也称之为指针传递),也有人认为是...

JavaScript 函数参数传递到底是值传递还是引用传递

博客分类:  JavaScript JavaScriptPythonCC++C#      在传统的观念里,都认为JavaScript函数传递的是引用传递(也称之为指针传递),也...

JavaScript 函数参数传递到底是值传递还是引用传递 (精华)

转自:http://www.zhihu.com/question/27114726  (摘抄) 苏墨橘,想要成为生活家的前端程序员 :) 潘知呼、柴草的笑、高熙彤 等人赞同 之前第一次...

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?...

JavaScript 函数参数传递到底是值传递还是引用传递

保存对象的变量,它里面装的值是这个对象在堆内存中的地址。 以下是详细分解: 数据类型 在 JavaScript 中数据类型可以分为两类: 原始数据类型值 primitive t...

Java-String 到底是值传递还是引用传递

刚才看见一个兄弟在为Java的String传值/传引用问题困惑,翻箱倒柜找到了这篇我很久以前写的文章,发在这里,希望能对迷惑的朋友有些帮助。  提要:本文从实现原理的角度上阐述和剖析了:在J...

java到底是值传递还是引用传递?

Java到底是值传递还是引用传递
  • ZJDWHD
  • ZJDWHD
  • 2016年09月23日 11:35
  • 437

java到底是值传递还是引用传递

public class TestMain { public static void main(String[] args) { List list = new ArrayList(); f...

java到底是值传递还是引用传递?

java中方法参数传递方式是按值传递。 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。 如果参数是引用类型,传递的是对象引用的拷贝。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA传参数到底是值传递还是引用
举报原因:
原因补充:

(最多只允许输入30个字)