源自一个面试的问题:字符串在函数的参数中是当成值传递还是引用传递。

问题描述

源自一个面试的问题:字符串在函数的参数中是当成值传递还是引用传递。这是测试方法: public void setA(String a) { System.out.println("In the setmethod before set:
解决方案二:
# " + a); a = "I am a student"; System.out.println("In the setmethod after set:
解决方案三:
# " + a); } public static void main(String[] args) { String a = "China is our motherland"; System.out.println("Out before set:----- "+ a); new UserQuery().setA(a); System.out.println("Out after set:----- "+a); } 结果显示 Out before set:----- China is our motherland In the setmethod before set:
解决方案四:
# China is our motherland In the setmethod after set:
解决方案五:
# I am a student Out after set:----- China is our motherland 这样的话,如果要在一个方法里面修改传入的参数的值,岂不是不行?如果这样的该怎么办呢? 问题补充:jjjssh 写道

解决方案

a = "I am a student"; 是创建了一个新的对象的如果要实现你说的,改变字符串,那就下面两种方法:1。传进来的时候就不要传String,传StringBuffer。因为String是final的2。传进来一个对象,你的a,b,c,d,e是对象的属性,然后改变对象的属性,就可以了还有和2类似的,就是传进来数组,然后得到结果后解析数组得到结果,比建立类稍微简单一点点
解决方案六:
传进来的参数只是值的引用,你要改变某个变量的值,那你得要找到她确切的物理地址,才行

时间: 2024-11-17 12:08:43

源自一个面试的问题:字符串在函数的参数中是当成值传递还是引用传递。的相关文章

浅谈JavaScript 函数参数传递到底是值传递还是引用传递_javascript技巧

在传统的观念里,都认为JavaScript函数传递的是引用传递(也称之为指针传递),也有人认为是值传递和引用传递都具备.那么JS的参数传递到底是怎么回事呢?事实上以下的演示也完全可以用于Java 首先来一个比较简单的,基本类型的传递: function add(num){ num+=10; return num; } num=10; alert(add(num)); aelrt(num); //输出20,10 对于这里的输出20,10,按照JS的官方解释就是在基本类型参数传递的时候,做了一件复制

visual studio-C++模版函数的定义中的形参一定要用引用吗

问题描述 C++模版函数的定义中的形参一定要用引用吗 老师是这样讲的: template <返回类型><函数名>(参数表) { 函数体 } template T fuc(T x, int y) { T x; //-- } 如果主调函数中有以下语句: double d; int a; fuc(d,a); 则系统将用实参d的数据类型double去代替函数模板中的T生成函数: double fuc(double x,int y) { double x; //-- } 然后我是这么写的 t

C#函数的参数中返回结构数组

函数|数组 实例:/// <summary>/// 用户信息结构/// </summary>public struct TUSER { public string LoginName; public string LoginPass; public string TrueName; public string EMail; public int Level;} /// <summary>/// 获得所有注册用户/// </summary>/// <pa

C++用指针变量作为函数的参数接受数组的值的问题详细总结_C 语言

实参和形参的四种结合方式 实参 形参 实例数组名 数组名 1.1数组名 指针变量 1.2指针变量 数组名 1.3指针变量 指针变量 1.4本文以输入10个整数,然后对其进行排序,然后输出的程序为例: 形参为数组名,实参是数组名 实例代码1.1: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ void Sort(int a[],int n); int a[10],i; cout<<"Please i

指针-C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可?

问题描述 C++中利用子函数交换main()中的一个int数组的值,交换地址为什么不可? 某书思考题 只改动子函数 实现主函数中数组排序我写了3种子函数 注释的都是可以正常用的 最上面的不可以(排序没变)不知道是为啥(指针不是代表地址吗 既然形参无法传回那我改变地址应该也可以啊) #include<iostream>#include<iomanip>#include<cstdlib> //pauseusing namespace std;//排序不变void swap(

sql 字符串连接函数

sql 字符串连接函数在sql中字符串连接函数我们学用到concat()来,concat() 的语法如下:concat(字串1, 字串2, 字串3, ...): 将字串1.字串2.字串3,等字串连在一起.请注意,oracle的concat()只允许两个参数:换言之,一次只能将两个字串串连起来.不过,在oracle中,我们可以用'||'来一次串连多个字串. select region_name + ' ' + store_name from geography where store_name =

MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法_MsSql

但是我们可以换一种方法解决这个问题.下面就来分析下解决办法. 对text或ntext类型的数据在查询中不能进行字符串操作.这时用得最多的是把text当作varchar(实际内容长度低于8000字节时)或把ntext当作nvarchar(实际内容长度低于4000字节时)来处理.但是这样处理也不是非常妥当毕竟如果text字段内容超过8000了岂不是要被截断或者忽略掉.最终找到了一种方法解决了"参数数据类型 text 对于 replace 函数的参数 1 无效"的问题.下面用一个例子来说明怎

在C#中如何在函数参数中返回结构数组?

函数|数组 头晕脑涨地研究了一天,就为了实现在函数的参数中返回结构数组. 现供大家分享,节省学习时间. 实例:  /// <summary>  /// 用户信息结构  /// </summary>  public struct TUSER  {   public string LoginName;   public string LoginPass;   public string TrueName;   public string EMail;   public int Leve

java 面试中的一道编写一个截取字符串的函数!!!!

函数|字符串 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个". package string;class SplitString { private String str; private int byteNum; publi