关于java中的参数传递
问题的引入是因为下午在群里看到了一个网友的问题:
给定如下Java 代码,编译运行后,输出结果是( )。
public class Test {
public static void main(String [ ] args) {
StringBuffer a = new StringBuffer(“A”);
StringBuffer b = new StringBuffer(“B”);
operate(a , b);
System.out.println(a + ”,” + b);
}
static void operate(StringBuffer x , StringBuffer y) {
x.append(y);
y = x;
}
}
A. A,B B. AB,B C. A,AB D.AB,AB
朋友可以猜猜这个答案,我也想告诉大家,答案是:B。也许有人会很惊讶,也许有人会很淡定。因为StringBuffer是一个类,对于类的使用,通过new,在堆中创建一个类的实例,利用一个引用来实现对这个对象的操作。当把一个引用当作参数传递到一个函数中的时候,C++采取的是:这个参数是一个地址。而在java中没有地址这个概念,一切都是值传递,那么这里又是怎么控制的。
首先,我做了一个测试:
public class Text {
public static void main(String[] args) {
String s = "b";
f(s);
System.out.println(s);
}
static void f(String s) {
s = "c";
}
} /* output
b
*///~
从结果可以看出:形参的效果并没有作用到实参中。我们继续看下一段代码:
public class Text {
String s = "b";
public static void main(String[] args) {
Text t = new text();
f(t.s);
 
相关文档:
传智播客JAVA培训2010-5-8OA第二天总结
一直以来,都听到这样的话,今天又在网上看到了这样一句话“写出一行代码往往比理解一行代码更重要。因为理解问题也许仅是一个数学上或实验上的技能而已,而写出一行新的代码,却需要有创造性的”。这毫无疑问的表显出来,学程序的最基本道理。当我们报着算法的书籍在啃 ......
String newStr = new String(oldStr.getBytes(), "UTF-8");
java中的String类是按照unicode进行编码的,当使用String(byte[] bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系 ......
1. 布局管理器
容器里组件的大小和位置是由布局管理器来决定的。容器对布局管理器的特定实例保持一个引用,当容器需要定位一个组件时,它将调用布局管理器来完成,决定一个组件的大小时也是如此。
在awt中有五种布局管理器
BorderLayOut
FlowLayOut
GridLayOut
GardLayOut
GridBagLayOut
1. & ......
从5月5号进入就业班到现在四天的时间了,上了这几天课发现就业班的强度真的很大,不像以前基础班的时候那么还比较轻松,已经渐渐感觉到了吃力,因为现在上课需要讲解的知识点太多,有时候下午老师讲到6点多钟才下课,课上的练习时间越来越少了,只能自己利用课后的时间多练习实践,许多东西还都是第一次 ......