Java中的值传递
在Java中方法参数的传递,都是值传递,对象传递是地址 ,基本数据类型传递的是值。地址和值都值。
下面以一个例子来看内存中的数据变化情况
public class Test{
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public callMethod(Test test){
Test test1 = new Test();
test1.setName("456");
test.setName("123");
test = test1;
System.out.println("test name:"+test.getName());
}
public static void main(String []args){
Test t = new Test();
callMethod(t);
System.out.println("t name:"+t.getName());
}
}
运行结果:
test name:456
t name:123
内存变化情况如下图:
(图一)调用方法之前实际上是声明了两个变量 test 它的作用域是方法内有效
(图二)callMethod(t); 调用方法,把t的的地址给test,他们指向同一个堆内存单元,执行这两个语句以后
test1.setName("123");
test.setName("456"); 都有了初始值
(图三)执行语句 test = test1; 把test1的地址给test test1和test 都指向同一个堆内存单元
(图四)方法调用结束,test和test1内存被释放掉
相关文档:
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的 ......
归纳一些网上取JAVA路径的方法:
注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。
得到classpath和当前类的绝对路径的一些方法
获得CLASSPATH之外路径的方法:
URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/ ......
在实际项目中给定一文件夹,得到这个文件夹下所有的文件这样的需求并不是很多,更多的是查找或是删除某一具体的文件
import java.io.File;
import java.util.ArrayList;
public class FileTest {
private static ArrayList<String> filelist = new ArrayList<String>();
public stati ......
public class Path {
//get class absolute address
public String getPath() {
String classPath = getClass().getName();
if (classPath.indexOf(".") != -1) {
classPath = classPath.substring(classPath.lastIndexOf(".") + 1,
......