代码:
package test;
public class Daniel {
static void operate(StringBuffer x,StringBuffer y){
System.out.println("x="+x);
System.out.println("y="+y);
x.append(y);
System.out.println("x="+x);
System.out.println("x.toString()="+x.toString());
y=new StringBuffer(x.toString());
System.out.println("y="+y);
System.out.println("------------------------");
}
public static void main(String[] args) {
StringBuffer a =new StringBuffer("X");
StringBuffer b =new StringBuffer("Y");
operate(a,b);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println(a +","+b);
}
}
输出结果:
x=X
y=Y
x=XY
x.toString()=XY
y=XY
------------------------
a=XY
b=Y
XY,Y
分析:
在operate()方法中,已经将“x”,“y”重新赋值,“x”,“y”都等于xy,但是在运行operate()后面的程序时,“a”的值变成xy而“b”的值没有变,这是为什么了?
在主函数中调用类的含参方法的运行轨迹:
主函数注入(参数) ---->注入(参数),在类方法中运行(重新赋值和运算)--输入结果--->被其他的类的方法调用--->输出结果;
在这个过程中实际上是单个方法本身对注入的参数的值进行改变,并没有对注入的参数(对象本身)进行改变。所以在其他类方法调用该参数本身是,任然是初始值。在这里值得注意的是:应为StringBuffer()类中的append();insert();delete();reverse();replace()等方法,是可以对对象本进行修改和操作的...
扩展:
StringBuffer a =new StringBuffer("X");
System.out.println("a的字符数是"+a.capacity());
System.out.println("a的长度是"+a.length());
输出结果:
--a的字符数是17
--a的长度是1
StringBuffer a=New StringBuffer(); 默认的是16char。
下面是一个与上面例子相关的题目,试试写出结果:
package test;
public class App {
int x=1;
public static void getNew(int x,int y){
y+=x;
x+=y;
System.out.println("getNew()中y="+y);
System.out.println("getNew()中x="+x);
}
public static int getChange(int x,int y){
y+=x;
x+=y;
return x;
}
void getChanged(int x,int y){
y+=x;
x+=y;
this.x=x;
}
public static void main(String[] args) {
int x=10;
int y=5;
getNew(x,y);
System.out.println("x="+x+" and y="+y);
getChange(x,y);
System.out.println("getChange()中的x="+getChange(x,y));
System.out.println("x="+x+" and y="+y);
App t=new App();
System.out.println("t.x="+t.x);
t.getChanged(x, y);
System.out.println("t.x="+t.x);
System.out.println("x="+x+" and y="+y);
}
}
输出结果:
getNew()中y=15
getNew()中x=25
x=10 and y=5
getChange()中的x=25
x=10 and y=5
t.x=1
t.x=25
x=10 and y=5
原创请勿转载.......
分享到:
相关推荐
- `SychTest`类中的`setX`和`setY`方法没有被声明为`synchronized`,因此它们可以在不同的线程中并发执行。 **结论:** 正确答案为C(当多个线程分别调用`setX`和`setY`时,`check()`可能会返回`true`)。 #### ...
**解析**:在这个例子中,`a`和`b`的值并没有被交换,因为在`change()`方法中交换的是它们的副本,而不是原始数据。 #### 三、对象类型的引用传递 Java中除了基本数据类型外,还有诸如类、数组等复合数据类型。当...
总的来说,这个压缩包为用户提供了完整的Zeebe和camunda-operate环境,让用户能够快速部署和试用Zeebe的工作流引擎,以及通过camunda-operate进行监控和管理。通过仔细阅读文档,配置服务,并按照启动脚本运行,用户...
在DeltaV Operate组态工具的使用过程中,经常会遇到一些不被广泛注意但又非常实用的小技巧。这些技巧不仅能提高工作效率,还能避免一些常见的问题。本文将详细介绍几个重要的小技巧,并给出具体的使用方法。 #### ...
`后,`s`的值为14,但在`main`方法中打印`s`时,由于没有初始化,显示为4。 4. **方法参数传递**: - 在`operate`方法中,`y`是未定义的局部变量,尝试使用`y.append(x);`会导致编译错误。此外,`y=x;`只是将`x`的...
1. **创建Word应用实例**:首先,我们需要创建一个Word.Application实例,这使得我们可以在C#代码中启动一个新的Word进程或者连接到已存在的Word实例。 ```csharp using Microsoft.Office.Interop.Word; ...
` 将`x`的引用赋给了`y`,即`y`现在指向`x`所指向的对象,但不会改变`a`或`b`的值。 - 方法返回后,`a`和`b`的值仍然保持不变。 **答案**:A. 代码编译并打印“A,B” ### 5. 继承与方法覆盖 **题目描述**:此题...
在`operate`方法中,`x.append(y)`会将`y`的值追加到`x`后面,但`y = x`仅仅改变了局部变量`y`的引用,而不会影响到`main`方法中的`b`。因此,`a`现在包含了`"AB"`,而`b`仍然是`"B"`。所以,输出应为`AB,B`。 ####...
这个压缩包包含了示例代码,用于演示如何在Go语言环境中读取、创建、写入以及保存xlsx文件。遵循以下步骤,你将能够熟练地运用Go进行xlsx文件操作。 首先,你需要安装必要的库。Go语言中,我们可以使用"github....
在ISO编程中,宏变量提供了更高级别的灵活性,允许程序员在程序中使用动态值,然而,SINUMERIK 828D系统默认并不直接支持这类程序。以下是对ISO带变量程序转化方法的详细说明: 1. **免责声明**:使用本手册中的...
在`operate`方法中,首先执行`x.append(y)`,将`y`的值追加到`x`后面,此时`x`的内容为“AB”。然后执行`y = x`,这实际上只是改变了`y`的引用,使其指向与`x`相同的对象,但不会改变`y`原有内容。因此,在`main`...
11. **未完成的代码段**:最后一个例子`Pass`类中的`m`方法没有完成,因此这里不提供具体解释,但通常一个公共方法应该有相应的实现。 以上就是基于给定内容解析的Java编程基础知识和常见错误。理解并避免这些错误...
然而,在这个示例中,`flag` 的初始值被设置为 `false`,因此 `sample()` 方法永远不会被调用。这意味着程序会正常终止,但没有任何输出。因此,正确答案是 B。 ### 题目二 **题目描述**:尝试编译并运行以下代码...
- **最终输出**:`x` 在调用 `myMethod()` 后变为 6,`y` 的值为 10,因此输出为 `4 + 10 + 7 = 21`,但该选项未列出。 - **正确答案**:没有列出正确的答案。按照题目给出的选项,最接近的答案是 E. 打印 7。 ### ...
在Java中,整数类型默认为32位有符号整数,因此这个值表示的是一个负数。转换成二进制形式后,我们可以看到它实际上表示的是-15(因为最高位是符号位,这里为1表示负数)。接着,我们使用按位取反操作符`~`对`i`进行...
"西门子 Operate 手册_828D 铣削宏程序简明手册_2019.pdf" 该手册主要介绍西门子 Operate 828D 铣削宏程序的基本概念、特点、用途以及宏变量的使用。下面是对该手册的详细知识点总结: 宏程序概述 * 宏程序是一种...
在`operate`方法内,`x.append(y)`将`y`的内容追加到`x`,然后`y=x`使`y`引用`x`所指向的对象。但是,这不会改变`main`方法中`b`的引用,所以`b`依然指向原来的`"B"`。因此,代码执行后,`a`的内容为"AB",`b`的内容...
在C#编程中,"文本操作方法OpenFile and operateFile"是两个关键概念,它们是进行文件处理的基础。本文将详细讲解如何使用C#来打开文件(OpenFile)以及对文件进行操作(operateFile),这对于任何希望深入学习C#...