第一题:public class Test1 {
public static void changeStr(String str) {
str = "welcome";
} public static void main(String[] args) {
String str = "1234";
changeStr(str);
System.out.println(str);
}
}
这个输出结果是1234,看解答是了解局部变量,那个变量是局部变量啊?我怎么看都一样啊?
第二题:public class Test
{
private int i=getValue();//第2行
private int j = 10;
int getValue(){
return j;
}
public static void main(String[] args) {
System.out.print(new Test().i);//第9行 }
}
求解释这个程序的输出结果
public static void changeStr(String str) {
str = "welcome";
} public static void main(String[] args) {
String str = "1234";
changeStr(str);
System.out.println(str);
}
}
这个输出结果是1234,看解答是了解局部变量,那个变量是局部变量啊?我怎么看都一样啊?
第二题:public class Test
{
private int i=getValue();//第2行
private int j = 10;
int getValue(){
return j;
}
public static void main(String[] args) {
System.out.print(new Test().i);//第9行 }
}
求解释这个程序的输出结果
解决方案 »
- Can you tell the differences between the two sentences?
- 关于list中bean复制问题(急)
- List list = new ArrayList(); 它们没有任何父子关系。怎么可以这么引用?
- 关于java里变量初始化顺序的问题
- 求救:菜鸟新问题,代码不能运行?
- 哪位有得到手机号段所属区域的代码?谢谢
- 怎样让socket接收端通过已知文件长度来接收文件
- 刚解决了个小问题,也许算不了什么,但是在很想和大家分享~~散分。来者有份。
- 如何确定线程优先级
- 新手,如何导入一个开源项目
- 数组长度无法输出显示问题?
- 求教关于TIMESTAMP 相减和 如何调用下一次循环的数据 谢谢
首先要知道java的传递方式是引用值传递。
当你调用changeStr(str)方法的时候,就会指向另外一个堆内存。方法执行完以后,指针就会断掉重新指向原来的str。所以输出就是1234.
这个例子中对象实例化时,先依次给i和j赋默认值,都是0,然后依次给i和j赋初始值,i的初始值是getValue(),此时j还是0,所以getValue()方法的返回值是0,即把0赋给i,然后给j赋上初始值10
第二题 输出结果为0 默认值实例变量初始化是先依次赋默认值,再依次赋用户定义的初始值
这个例子中对象实例化时,先依次给i和j赋默认值,都是0,然后依次给i和j赋初始值,i的初始值是getValue(),此时j还是0,所以getValue()方法的返回值是0,即把0赋给i,然后给j赋上初始值10
那就是实例化这个类的时候,把这个对象的基本数据类型变量都先初始化为1??java中都是这样吗?