首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小程序的输出结果,该怎么处理

2012-07-15 
小程序的输出结果第一题:Java codepublic class Test1 {public static void changeStr(String str) {str

小程序的输出结果
第一题:

Java code
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,看解答是了解局部变量,那个变量是局部变量啊?我怎么看都一样啊?


第二题:
Java code
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行    }}
求解释这个程序的输出结果

[解决办法]
第一题:
首先要知道java的传递方式是引用值传递。
当你调用changeStr(str)方法的时候,就会指向另外一个堆内存。方法执行完以后,指针就会断掉重新指向原来的str。所以输出就是1234.

[解决办法]
实例变量初始化是先依次赋默认值,再依次赋用户定义的初始值
这个例子中对象实例化时,先依次给i和j赋默认值,都是0,然后依次给i和j赋初始值,i的初始值是getValue(),此时j还是0,所以getValue()方法的返回值是0,即把0赋给i,然后给j赋上初始值10
[解决办法]
第一题是差u难题的是引用,不会改变原来的str的值,所以还是1234
[解决办法]
第二个因为给i的不能确定,所以只能使用默认的值,应该先声明j
[解决办法]
探讨

实例变量初始化是先依次赋默认值,再依次赋用户定义的初始值
这个例子中对象实例化时,先依次给i和j赋默认值,都是0,然后依次给i和j赋初始值,i的初始值是getValue(),此时j还是0,所以getValue()方法的返回值是0,即把0赋给i,然后给j赋上初始值10

热点排行