关于JAVA中参数传递问题的总结
2006-11-14 21:54
676 查看
关于JAVA中参数传递问题的总结
关于JAVA中参数传递问题的总结
首先以两个例子开始:
1)
public class Test2 {
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;
}
}
输出:AB,B
2)
public class Test2 {
public static void add3 (Integer i){
int val=i.intValue();
val += 3;
i = new Integer (val);
}
public static void main (String args [ ] ) {
Integer i = new Integer (0);
add3 (i);
System.out.println (i.intValue ( ));
}
}
输出:0
首先我们应该明白JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法,理解了这两点就能理解方法操作对象的相关问题了。最好能画出引用指向对象的图出来,就能完全理解了。
第1题,调用operate方法时,传入了两个引用a,b的拷贝x,y,这两个x,y都指向原a,b引用所指向的对象。x.append(y)对它指向的对象(即a指向的对象)进行了操作。而x=y,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。
第2题,i=new Integer(val)只是一个引用的拷贝指向了另外一个对象,而原来的i仍然是指向对象new Integer(0)的。
把握住了JAVA都是传值并且传的都是拷贝的话,类似的题大家都能迎刃而解了。
关于JAVA中参数传递问题的总结
首先以两个例子开始:
1)
public class Test2 {
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;
}
}
输出:AB,B
2)
public class Test2 {
public static void add3 (Integer i){
int val=i.intValue();
val += 3;
i = new Integer (val);
}
public static void main (String args [ ] ) {
Integer i = new Integer (0);
add3 (i);
System.out.println (i.intValue ( ));
}
}
输出:0
首先我们应该明白JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法,理解了这两点就能理解方法操作对象的相关问题了。最好能画出引用指向对象的图出来,就能完全理解了。
第1题,调用operate方法时,传入了两个引用a,b的拷贝x,y,这两个x,y都指向原a,b引用所指向的对象。x.append(y)对它指向的对象(即a指向的对象)进行了操作。而x=y,只是两个拷贝变量在赋值,并没有影响到原b所指向的对象。所以b所指向的对象仍然为B。
第2题,i=new Integer(val)只是一个引用的拷贝指向了另外一个对象,而原来的i仍然是指向对象new Integer(0)的。
把握住了JAVA都是传值并且传的都是拷贝的话,类似的题大家都能迎刃而解了。
相关文章推荐
- 关于JAVA中参数传递问题的总结(按值传递和引用传递)
- 关于java开发的性能问题总结(必看)
- JAVA中参数传递问题的总结(按值传递和引用传递)
- 关于android端和java端的javax.crypto.BadPaddingException异常问题总结
- JAVA中参数传递问题的总结(按值传递和引用传递)
- 总结java关于jacob操作word这几天遇到的问题!
- Java面试中关于String的问题总结
- 关于java mail 发邮件的问题总结(转)
- 【Java】关于文件路径问题总结
- 关于java调用webservice参数传递为空问题
- 关于Struts2与hibernate结合出错的问题!------java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I问题解决及总结
- Java,InputStream,Socket阻塞.(关于HTTP请求的IO问题自我总结)
- 关于java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required 类似问题的解决总结
- 关于Java的线程问题总结
- 关于java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required 类似问题的解决总结
- 工作学习 问题总结 java 基础 关于arraylist.addall
- 关于String s1 = new String("abc") 创建一个对象问题和Java常量池总结
- javaweb开发中关于字符编码出现乱码问题的总结
- 关于 Java 权限修饰符 的问题总结
- 关于java中Serializable序列化问题中属性赋值总结