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数值,为什么在处理的方法中也没有能改变原来的参数,
请问这是什么原因?
解决方案 »
- 怎么让线程中执行的任务限定时间结束?
- Java如何获取本机主板序列号?
- 关于StringBuffer比较的相关问题
- 怎么写一个函数输入一个数字参数,输出为大写中文数字(例:输入12058.45,输出为:壹万贰仟零伍拾捌元肆角伍分)?
- 请教:我做了一个内部办公系统,内部邮件要求可以通过SMTP和POP3发送和收取邮件
- 为什么最简单的applet小程序在IE里运行没结果???
- 关于时间比较的问题
- 初学者基础问题
- UltraEdit32永久注册码和java 配置问题
- 如何读取文件中的中文,并显示在Label或TextField?
- 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说事有什么问题?
这与引用类型的性质无关,是这几个类的内部实现决定的。