int a=1;
int b=a+1;
a=10;
System.out.println(b);答案为2
问下为什么答案是2,b=a+1 a的值发生了改变,按理b的值不是也应该发生改变吗?此种方法试过对象的成员变量,结果是一样的,即String a=”a” String b=a+”b” 当String a=”aa”的时候 String b依然=”ab” 而不是”aab”
求高手解答!
int b=a+1;
a=10;
System.out.println(b);答案为2
问下为什么答案是2,b=a+1 a的值发生了改变,按理b的值不是也应该发生改变吗?此种方法试过对象的成员变量,结果是一样的,即String a=”a” String b=a+”b” 当String a=”aa”的时候 String b依然=”ab” 而不是”aab”
求高手解答!
解决方案
5
b=a+1; 这只是把a+1的值算出来给b而已.
String也一样.
不是很理解你的想法. 你可能想到的事情和list比较像 . ArrayList 在反复add同一个对象的时候是指向同样的地址的.
基本类型是没有所谓引用的.(String特殊一些 可以去百度看一下.)
String也一样.
不是很理解你的想法. 你可能想到的事情和list比较像 . ArrayList 在反复add同一个对象的时候是指向同样的地址的.
基本类型是没有所谓引用的.(String特殊一些 可以去百度看一下.)
5
傻逼。程序是顺序执行的 后面就算值发生改变 之前的值不会重新改的
5
“值传递”与“地址传递”的问题。
基本类型是值传递
数组、String、对象是地址传递
基本类型是值传递
数组、String、对象是地址传递
25
int a=1;
这一句是分配了一个int内存空间,然后赋值为1
int b=a+1;
给b分配一个int的内存空间。取a的值(而不是内存地址),在a的值基础上加1,所以以后a的值发生改变,对b没有影响
这一句是分配了一个int内存空间,然后赋值为1
int b=a+1;
给b分配一个int的内存空间。取a的值(而不是内存地址),在a的值基础上加1,所以以后a的值发生改变,对b没有影响