package test;import java.util.ArrayList;
import java.util.List;public class TestList { public static void main(String[] args){
List<String> list = new ArrayList<String>();
testList(list);
System.out.println("list.size()="+list.size());
Integer num = new Integer(0);
testInteger(num);
System.out.println("num="+num);
int count = 0;
testInt(count);
System.out.println("count="+count);
}
public static void testInt(int count){
while(count < 10){
count = count + 1;
}
System.out.println(count);
}
public static void testInteger(Integer num){
while(num < 10){
num = num + 1;
}
System.out.println(num);
}
public static void testList(List<String> list){
while(list.size() < 10){
list.add("111111");
}
System.out.println(list.size());
}
}
最后的输出结果为:
10
list.size()=10
10
num=0
10
count=0请问:第一个传的是一个集合对象,在处理的方法中可以改变传入的参数,
第二个传的是一个Interger对象,为什么在处理的方法中没有改变原来的参数,
第三个传的是一个int数值,为什么在处理的方法中也没有能改变原来的参数,
请问这是什么原因?
import java.util.List;public class TestList { public static void main(String[] args){
List<String> list = new ArrayList<String>();
testList(list);
System.out.println("list.size()="+list.size());
Integer num = new Integer(0);
testInteger(num);
System.out.println("num="+num);
int count = 0;
testInt(count);
System.out.println("count="+count);
}
public static void testInt(int count){
while(count < 10){
count = count + 1;
}
System.out.println(count);
}
public static void testInteger(Integer num){
while(num < 10){
num = num + 1;
}
System.out.println(num);
}
public static void testList(List<String> list){
while(list.size() < 10){
list.add("111111");
}
System.out.println(list.size());
}
}
最后的输出结果为:
10
list.size()=10
10
num=0
10
count=0请问:第一个传的是一个集合对象,在处理的方法中可以改变传入的参数,
第二个传的是一个Interger对象,为什么在处理的方法中没有改变原来的参数,
第三个传的是一个int数值,为什么在处理的方法中也没有能改变原来的参数,
请问这是什么原因?
解决方案 »
- Thingking In Java里一个对象构造顺序和向上转型的问题
- 在Java中实现在Oracle中创建存储过程的功能,就是运行java程序,就能在Oracle中创建存储过程、
- java 编译问题
- org.w3c.dom.*这个包在哪里?
- 语法错误,将“enum Identifier”插入到完整 EnumHeaderName 中 什么意思啊
- Java新手入门书籍,新手进来!
- 关于 传参的困惑
- 有关JComboBox的下拉框问题
- 连接数据库后,执行select为什么会出现"参数不足,期待是1"的错误?
- 新手求救!!关于变量初始化
- GetStringUTFChars(env,str,NULL)返回值的操作问题
- 「线程」 为何停止以后就不能再启动了?
第一个list,生成了list副本,两个list指向了同一段内存(包括size方法),对副本list的size修改,原来的list里面的size会改变。
第二个integer,生成了integer副本,对副本修改,原来的integer不会改变
第三个同样如此。
integer num = num + 1; 相当与产生一个新的对象 num这个引用 指向 num+1 而原先引用 指向没改变
int传的是值
如果是String类型,拿immuatable说事有什么问题?
这与引用类型的性质无关,是这几个类的内部实现决定的。