//String是类 只要是类它的对象就是按引用传递的,但是String对象本身是不可变的,不可被修改
//但是可以修改指向该对象的引用啊,使该引用指向别的对象,不指向原来的对象
package com.wuxifu.test;
public class test
{
String s2="abc";
StringBuilder stringBuilder = new StringBuilder("bbb");
public static void main(String[] args)
{
test test = new test();//该对象一创建就又两个成员变量 s2="abc" stringBuilder = new StringBuilder("bbb")
test.change(test.s2,test.stringBuilder);//由于s2 stringBuilder 都是类的实例化对象,所以是引用传递
System.out.println(test.s2);//abc,注意通过上面一个方法不会改变该对象成员变量的引用
System.out.println(test.stringBuilder);//bbbggg,注意通过上面一个方法不会改变该对象成员变量的引用
test.change002(test.s2,test.stringBuilder);
System.out.println(test.s2);//abc??? ,注意通过上面一个方法不会改变该对象成员变量的引用
System.out.println(test.stringBuilder);//bbbgggggg ,注意通过上面一个方法不会改变该对象成员变量的引用
}
public void change(String s2,StringBuilder stringBuilder)
{
// test.change(test.s2,test.stringBuilder) 调用了该方法,所以形参 s2 就是指向test.s2
//形参stringBuilder就指向test.stringBuilder
//变量名的引用相同,但他们还是不同的变量,不同的变量,其中任何一个可以随时指向别的对象,从而改变引用了
s2+="???";//s2是局部变量跟形参数一样,虽然得到了test.s2的引用,但是没用,局部变量形参就改变了引用指向别的对象 s2+"???"该对象()
stringBuilder.append("ggg");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,形参对它指向的对象进行了修改,即对象本身被修改,所以test.stringBuilder得到对象内容就会改变
stringBuilder=new StringBuilder("GGGGGG");//stringBuilder是局部变量跟形参数一样,得到了test.stringBuilder的引用,和它指向同一个对象,但是又没用到,立即该形参就指向别的对象了
}
public void change002(String s,StringBuilder stringBuilder)
{
s2+="???";//对象的成员变量,非形参
stringBuilder.append("ggg");//形参修改指向对象的内容
stringBuilder=new StringBuilder("GGGGGG");//形参改变引用,指向别的对象,跟原来指向的对象断绝关系
}
}
//形参如何改变某对象的成员变量的值呢,就是得到该成员变量指向对象的引用,通过引用传递而改变对象的内容,用的好没什么,用的不好就会误导自己,注意
相关推荐
<jaxws:endpoint id="myService" implementor="#myServiceImpl" address="/myService"> ``` 7. **客户端调用** CXF也提供了生成客户端代理类的工具,便于调用远程Web服务。客户端代码如下: ```java ...
例如,如果用户选择的标签以逗号分隔的字符串"tag1,tag2,tag3"传入,我们可以在Java代码中将其分割并存入List<String>。 接下来,我们将焦点转到Mapper.xml文件。在SQL语句中,我们可以使用`<foreach>`标签来遍历...
### Java面试题解析:传递引用的理解 #### 题目背景 在Java编程语言中,对象的传递方式一直是面试中的热点话题之一。本篇将基于一个具体的代码示例来探讨Java中对象引用传递的特点及其背后的原因。 #### 题目描述 ...
"xml to bean or bean to xml"这一主题涉及到如何将XML文档的数据映射到Java Bean对象上,以及如何将Bean对象的数据转换回XML格式。下面我们将详细探讨这两个过程。 1. XML到Bean转换: 这个过程通常称为XML的反...
然后,在`main`函数中,我们使用`scanf`函数读取三个整数,并将其传递给`max`函数,最后输出最大值。 C++语言实现 在C++语言中,我们可以使用函数模板来比较三个数的大小,并输出最大值。下面是一个简单的示例程序...
最后,文档提到函数的参数传递,包括值传递和引用传递的区别,以及函数的返回值。函数默认是通过值传递参数的,但使用引用传递`&`符号,可以让函数直接修改参数的值。函数可以通过`return`语句返回值,省略`return`...
当需要在窗体之间传递简单类型的数据,如字符串、整数或布尔值时,可以定义公共属性。例如,在源窗体中创建一个公共属性,然后在目标窗体中通过该属性获取或设置值。 ```csharp // 源窗体 public partial class ...
`lambda`函数通常用于需要一次性、短小的函数,比如作为参数传递给高阶函数,如`map()`、`filter()`或`reduce()`。 将字符串转换为`lambda`表达式主要涉及两个步骤:解析字符串和构建函数对象。这个过程通常需要...
在将C#的List传递给Oracle存储过程时,我们需要创建一个PL/SQL类型的数组,以便存储过程能够理解和处理C#列表中的元素。 1. **创建Oracle存储过程**: 在Oracle数据库中,创建一个接受数组作为参数的存储过程。...
例如,当你需要从Form1向Form2传递一个字符串时,可以在Form2的构造函数中接收这个值。首先,修改Form2的构造函数,添加一个string类型的参数: ```csharp public Form2(String s) { InitializeComponent(); this...
SignalNow:无服务器信令和实时消息传递SignalNow是使用和构建的实时信令服务。 SignalNow的主要功能: 无服务器。 借助Azure Functions和SignalR进行实时,轻松地扩展。 使用 , , 以及基于密钥的机制进行集成身份...
数据以键值对(key-value pairs)的形式存储,可以是对象(字典)、数组、数值、字符串、布尔值或null。在iOS中,我们可以使用内置的`NSJSONSerialization`类来解析和序列化JSON数据。 ### JSON解析步骤 1. **创建...
- **按参考参数传递**:传递的是变量的引用,修改函数内的变量会影响原始变量。 ##### 2.6 时序控制指令 - **注释**:用于添加代码说明,不会被编译器解析。 - **call 子程序的调用**:调用预先定义好的子程序。 - ...
String arrayStr = "{" + String.join(",", Arrays.stream(parameter).mapToObj(String::valueOf).toArray(String[]::new)) + "}"; ps.setString(i, arrayStr); } // 其他方法实现... } ``` 然后,在MyBatis的...
- **参数传递**:了解值传递和引用传递的区别,以及如何向过程传递参数。 8. **类和对象**: - **面向对象编程(OOP)**:VB.NET支持类的创建,封装、继承和多态是OOP的三大特性。 - **共享成员**:类中的静态...
例如,在分布式系统中,对象可能需要在网络节点间传输,此时就需要序列化来将对象转化为可以跨进程传递的形式。 总之,Java对象的序列化可以通过`transient`关键字来排除某些字段,同时可以利用`writeObject()`和`...
- 定义了一个名为`TiSiZiPD3`的过程,接受四个参数,其中两个参数按值传递(`ByVal`),另外两个参数按引用传递(`ByRef`)。 - `ByVal HeiBai As Integer`:黑色或白色标志。 - `ByRef X As Integer`:X坐标。 - `...
8. Python中,函数参数传递是值传递,实参向形参传递数据是单向的,形参不能改变实参。位置参数按顺序匹配,而关键字参数则允许通过参数名指定值,可以跳过或改变参数顺序。 9. 该if语句中,i-1(7)不大于j(16)...
json-schema-traverse 遍历 JSON Schema 将每个架构对象传递给回调安装 npm install json-schema-traverse用法 const traverse = require ( 'json-schema-traverse' ) ;const schema = { properties : { foo : { ...
- 子程序参数传递方式包括寄存器传递、堆栈传递和内存传递,各有优缺点,如寄存器速度快但数量有限,堆栈稳定但效率略低。 - CALL指令调用子程序并保存返回地址,JMP指令直接跳转,CALL可以实现函数调用,JMP更适合...